2010-09-13 125 views
2

POCO問題,我有過唯一的主密鑰ID類型唯一標識符,和孩子的關係,1對多,這裏我把主ID柱,並追加唯一ID的SQLCE數據庫也爲每一行。現在我爲我的域模型NOT STE使用POCO實體。雖然添加和修改實體的工作正常,但我現在很難刪除,現在說個別子記錄,當然,假設他們有自己的主鍵。只要我給刪除列表,並通過每個實體迭代,而第一實體連接,第二我得到異常:實體框架4,SQLCE與刪除

具有相同鍵的對象已經存在於ObjectStateManager。 ObjectStateManager不能使用同一個鍵跟蹤多個對象。

我要指出,我第一次做任何添加和修改實體到數據庫中,同時打開上下文...部署和調用另一個方法刪除其中當然打開另一個方面,如果它成功結束處置。

這個異常的意義是什麼,我沒有得到什麼?

回答

0

如果在對象圖中有同一實體的兩個不同實例,則會發生此異常。這種異常也發生在STE,但有一個解決方法。

基本上,你有兩個實體(POCO),每個第三實體的關係。當您嘗試將第一個實體與第二個實體相關聯並嘗試將其保存到實體上下文中時,兩個實體都會有第三個實例,這就是錯誤所在。

解決方法:

之前,你讓兩個實體之間的關係,試圖「合併」的任何相關實體一起。這樣一來,實體上下文不需要決定哪個「公共實體」實例持續存在。

實施例:

A,(B1,B2),C是實體。

A - B1

Ç - B2

A - B1 - Visual C

在這種情況下,B1和B2都是乙實體,只是不同的實例(可能是由於通過不同的上下文對數據存儲的不同調用)。當您想要關聯A和C時,您必須選擇放棄B2並將C鏈接到B1。