0

我有一個多對多的關係模型:更新實體一對多的關係

public class Transport 
{ 
    ... 
    public virtual ICollection<Remark> CargoRemarks { get; set; } 
    ... 
} 

public class Remark 
{ 
    public virtual ICollection<Transport> Transports { get; set; } 
} 

在某些情況下,我必須更新包含一些言論我的運輸模式。添加或刪除備註時,不附加模型(由於某些架構決策,這不能完成)。

但是沒有我的交通運輸已經改變發表任何言論,我的傳送對象更新失敗:

'...Transport' failed because another entity of the same type already has the same primary key value. This can happen when using the 'Attach' method or setting the state of an entity to 'Unchanged' or 'Modified' if any entities in the graph have conflicting key values. This may be because some entities are new and have not yet received database-generated key values. In this case use the 'Add' method or the 'Added' entity state to track the graph and then set the state of non-new entities to 'Unchanged' or 'Modified' as appropriate.

例子:

  • 創建我的運輸模式,並插入到數據庫一些言論。一切工作正常。
  • 在稍後的時間,這個插入的模型會再次加載並分離。
  • 沒有改變(沒有添加也沒有刪除模型中的任何註釋)我的模型我想更新它。這導致這個錯誤消息。

這是我打電話是爲了更新實體的方法:

public virtual void Update(TEntity entityToUpdate) 
{ 
    dbSet.Attach(entityToUpdate); 
    context.Entry(entityToUpdate).State = EntityState.Modified; 
} 
+0

林現在有同樣的問題。 –

回答

0

從我的角度看您的問題不相關的M2M關係。這與Attach相同。

我建議的一件事是考慮重新加載實體從數據庫而不是附加。背後的原因是,您無法確定此實體是否以您試圖附加的形式存在於數據庫中。

如果這不是一個選項,你嘗試過沒有附加實體?如果它已經擁有了實體按鍵,應適當根據自我更新:

https://msdn.microsoft.com/en-us/data/jj592676.aspx

+0

即使沒有附加實體,問題也會出現。當我不更改(添加/刪除)任何註釋時,問題不會顯示。 – mosquito87