我的项目出错了。
[HttpPost]
protected virtual ActionResult Update(T entity)
{
var success = true;
var errorMessages = new List<ErrorMessage>();
try
{
var originalEntity = _genericService.Find(entity.Id);
SetNullToTransientReferences(entity);
if (!errorMessages.Any())
{
_genericService.Update(entity);
//AfterUpdate(entity, originalEntity);
}
else
{
success = false;
}
}
catch (Exception ex)
{
success = false;
//errorMessages.AddRange(ExceptionService.GetErrorMessages(ex));
}
ResolveCircularReferences(entity);
return Json(new
{
Data = entity,
Success = success,
Errors = errorMessages,
}, JsonRequestBehavior.AllowGet);
}
通用存储库更新方法
public virtual void Update(TEntity entityToUpdate)
{
_context.Entry(entityToUpdate).State = EntityState.Modified;
}
首先,我推荐模型然后我正在做,但我得到了纠错过程。
提前致谢
答案 0 :(得分:0)
当您执行的操作会导致EF上下文监视相同实体的两个实例时,会发生这种情况。
例如,假设EF已经知道Customer
实体CustomerId
= 8.现在,如果您执行的某些操作实际上对EF有效,那么&#34;此处&#39 ;客户,CustomerId是8 - 我希望您为我跟踪#34;,EF无法为您做到这一点。
答案 1 :(得分:0)
似乎您尝试修改的实体未被正确跟踪,因此无法识别为已编辑,而是添加。
您可以尝试分离和重新附加,而不是直接设置状态:
//_context.Entry(entityToUpdate).State = EntityState.Modified;
_context.Entry(entityToUpdate).State = EntityState.Detached;
_context.entityToUpdate.Attach(entityToUpdate);