我一直堅持這個問題一個多星期了。希望有人能指出我正確的方向。自追蹤實體 - AcceptChanges無法繼續,因爲該對象的鍵值與ObjectStateManager中的另一個對象發生衝突
我從我的模式的簡要說明開始。
資產1 ---> 1個地址* - > 1個區* - > 1區* - > 1國家
包1 - > *資產
使用自跟蹤實體( STE)+ WCF。
步驟:資產清單
- 呼叫數據存儲。
- 調用數據存儲以獲取軟件包列表。
- 用戶選擇一個包併爲其分配一些資產。
- 保存包。
在步驟2中,呼叫使用地址的急切加載。
from p in context.Assets.Include("Address.Area.Region.Country")
這種嘗試調用
context.Packages.ApplyChanges(package)
的AcceptChanges不能繼續,因爲 對象的鍵值衝突 在 ObjectStateManager另一個對象時的錯誤。在致電 AcceptChanges之前,請確保 鍵值是唯一的。
編輯
周圍窺探後,我發現這是一個STE問題。問題在於,您無法持續保存包含同一實體的多個實例的圖,如here所述。這是我的問題。
如何將實體添加到我的實體 集合中。新實體可能有 相關實體,其中包含與該集合中已有的密鑰相同的 密鑰。 也就是說添加可能包含相同地址,區域,地區或 國家實體的 的新資產。
這裏是我的約束:
- 我必須使用導航集合,因爲它影響到UI。
- 我無法預取所有將涉及的實體,因爲數據集太大。
- 我必須能夠隨時拍攝實體的快照,以便保留歷史記錄並使用它來「撤消」任何更改。
我意識到迭戈乙建議維加可能的解決方案,但這些都不是選項我可以用我的解決方案。有沒有人有任何其他想法?
你有重複鍵,這是不允許的。沒有你的代碼就可以這麼說。 – 2010-07-28 12:37:28
我認爲你需要發佈一個簡單的代碼示例,發生錯誤。幾乎不可能說出任何內容,而不是您的帖子中提供的信息中有重複的密鑰。 – 2010-07-30 13:52:22