2015-12-21 36 views
1

插入另一張請考慮下面的代碼:刪除的對象,並使用相同的密鑰

var tmpCurrentRecord = ent.Mytbl.Where(o => o.ID == CurrentRecord.ID).First();       
ent.ObjectStateManager.ChangeObjectState(tmpCurrentRecord, System.Data.EntityState.Deleted); 
ent.Mytbl.DeleteObject(tmpCurrentRecord); 

ent.Mytbl.AddObject(NewRecord); 

ent.SaveChanges(); 

我想重置列的具體record.Because值此列的數量大約是70列,我想刪除使用相同的主鍵錄製並重新插入。但我得到這個錯誤:

An object with the same key already exists in the ObjectStateManager. The ObjectStateManager cannot track multiple objects with the same key.

我該如何解決這個問題?

+0

你發佈你的修改到實際的數據庫(指數等更新少)?我不是100%確定,但我認爲你*標記*它刪除。只要您不保存這些更改,技術上仍存在記錄。 –

+0

您是否嘗試過兩次調用SaveChanges()?一旦刪除後,第二次插入後。這可能會解決問題.. –

+0

@PetrAdam不,我稱之爲一次 – Arian

回答

1

您可以分離舊的,然後附加新的對象。看到這個overview on MSDN

,消除了需要做的SaveChanges 2(),它應該是更快各地

相關問題