2012-10-10 104 views
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; 
    } 

回答

0

查看ObjectContext.Refresh,它允許您從數據庫中刷新實體。您可以將RefreshMode設置爲ClientWins或StoreWins。

使用Try ...捕獲邏輯並處理catch中的衝突,以強制ClientWins進行更改,或將更改後的數據下拉到上下文中並重新開始編輯。在大多數情況下,後者是更好的方法。