在更新我收到此错误的对象时,我有一个使用EF 4.1和DbContext
的存储库
存储更新,插入或删除语句影响了意外的行数(0)。实体可能已被修改或 自实体加载后删除。刷新ObjectStateManager 条目。
我认为与乐观并发更新有关。任何想法如何解决它?
public void UpdateAddingCandidate(Event eventObj, int candidateId)
{
Candidate newCandidate = db.Candidates.AsNoTracking().FirstOrDefault(x => x.CandidateId == candidateId);
eventObj.Candidate = newCandidate;
eventObj.CandidateId = newCandidate.CandidateId;
db.Entry(eventObj).State = EntityState.Modified;
}
答案 0 :(得分:0)
查看ObjectContext.Refresh,它允许您从数据库中刷新实体。您可以将RefreshMode设置为ClientWins或StoreWins。
使用Try ...捕获逻辑并处理catch中的冲突以强制使用ClientWins进行更改或将更改的数据下拉到上下文中并重新开始编辑。在大多数情况下,后者是更好的方法。