0

我有一个使用 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;
    }
4

1 回答 1

0

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

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

于 2012-10-10T12:56:21.697 回答