2016-05-11 142 views
0

我碰到一個EF6紀錄克隆與關係

Context 
.MyRepo 
.Include(p => p.MyRelation) 
.AsNoTracking() 
.SingleOrDefault(p => p.Uuid == recordUuid); 

的EF6記錄然後我嘗試插入的副本記錄zith

myRecord.Uuid = Guid.NewGuid(); 
myRecord.EntityKey = new System.Data.EntityKey("modelqualifiedname", "Id", 1726526); 

Context.MyRepo.AddObject(myRecord); 
Context.SaveChanges(); 

但它失敗,此消息

「ObjectStateManager中已存在具有相同鍵的對象 ObjectStateManager無法跟蹤多個對象同樣的 關鍵。「

我試圖設置EntityKeynull,就像它是一個新的記錄;但它沒有幫助。任何想法?

+0

這聽起來像他們的重複PK的地方。你有沒有試過在你的數據庫中通過鍵1726526做一個where子句? –

+0

是的;現有的最高密鑰是DB中的101626 – MaPi

+0

我認爲由於子對象而導致錯誤,因此應該嘗試爲每個子對象設置一個新密鑰。 – hazimdikenli

回答

0

我想你會因爲子對象而出錯,你應該嘗試爲每個子對象設置一個新的鍵。

2

此對象已被EF追蹤。

您必須修改其密鑰或將其狀態更改爲已修改。

Context.MyRepo.Entry(myRecord).State = EntityState.Modified; 

然後保存。