使用Entity Framework进行乐观并发更新

时间:2012-10-10 08:48:02

标签: entity-framework entity-framework-4

在更新我收到此错误的对象时,我有一个使用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;
    }

1 个答案:

答案 0 :(得分:0)

查看ObjectContext.Refresh,它允许您从数据库中刷新实体。您可以将RefreshMode设置为ClientWins或StoreWins。

使用Try ...捕获逻辑并处理catch中的冲突以强制使用ClientWins进行更改或将更改的数据下拉到上下文中并重新开始编辑。在大多数情况下,后者是更好的方法。