我正在将MVC用于我的项目。
我添加了一个名为group
的控制器,在这个控制器中,我有一些像往常一样的动作,如创建和编辑等。
但我的问题涉及edit
方法正如您在此处所见:
public ActionResult Edit(int GroupId)
{
ViewBag.groupIdLST = new SelectList(OBJgroupRepository.FindBy(i => i.GroupId == null).ToList(), "Id",
ViewBag.GroupType = new SelectList(OBJgroupRepository.FindBy(i => i.GroupId == null).ToList(), "name",
DomainClass.Group tg = OBJgroupRepository.FindBy(i => i.Id == GroupId).First();
return View(tg);
}
[HttpPost]
public ActionResult Edit(Group gr)
{
if (ModelState.IsValid)
{
OBJgroupRepository.Edit(gr);
OBJgroupRepository.Save();
}
TempData["success"] = "اطلاعات با موفقیت ویرایش شد";
return RedirectToAction("Create");
}
当我点击编辑按钮时出现此错误:
存储更新,插入或删除语句会影响意外 行数(0)。自那以后,实体可能已被修改或删除 实体已加载。看到 http://go.microsoft.com/fwlink/?LinkId=472540了解有关的信息 理解和处理乐观并发异常。
我的编辑和保存方法:
public virtual void Edit(T entity)
{
_entities.Entry(entity).State = System.Data.Entity.EntityState.Modified;
}
public virtual void Save()
{
try
{
_entities.SaveChanges();
}
catch (DbEntityValidationException e)
{
foreach (var eve in e.EntityValidationErrors)
{
Debug.WriteLine("Entity of type \"{0}\" in state \"{1}\" has the following validation errors:",
eve.Entry.Entity.GetType().Name, eve.Entry.State);
foreach (var ve in eve.ValidationErrors)
{
Debug.WriteLine("- Property: \"{0}\", Error: \"{1}\"",
ve.PropertyName, ve.ErrorMessage);
}
}
throw;
}
}
我的存储库:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using DomainClass;
using ProjectModel;
namespace Repository
{
public class GroupRepository : GenericRepository<DataAccessModelContainer, Group>
{
}
}
可根据要求提供任何详细信息。
最好的问候。
答案 0 :(得分:4)
问题在于:
OBJgroupRepository.Edit(gr);
OBJgroupRepository.Save();
你曾两次致电OBJgroupRepository
!这会导致线程之间的竞争条件(以及随后的并发性考虑)。 尝试在编辑中使用保存方法内容。
答案 1 :(得分:1)
我知道这已经很晚了,但今天发生在我身上,我无法弄清楚原因。我首先使用代码,不得不对主键进行重大更改。当我这样做时,我开始得到同样的错误。我调查了大约2个小时,最后发现我试图将数据插入主键。我想我会让人们知道这可能是你可以得到这个错误的原因。