2010-10-27 42 views
0

的多個實例,我使用的是第一次EF4並採用了的UnitOfWork(的DataContext)的戰略按次引用。但是,我遇到了問題並尋求建議。實體框架4錯誤:一個實體對象不能被IEntityChangeTracker

我有一個顯示工作站的列表,當我點擊編輯按鈕,我有一個顯示爲編輯所選工作站另一個窗口的窗口。

列表視圖和編輯視圖中使用自己的UnitOfWork,所選擇的工作站通過對編輯視圖過去了,但是當我嘗試保存在編輯觀點我碰到下面的工作站;

的實體對象不能由IEntityChangeTracker

的多個實例我知道,這是因爲我通過傳遞給編輯視圖工作站對象具有與之相關聯的數據的上下文中被引用。

我應該如何處理?

+0

你可以發佈您的代碼? – Fabiano 2010-10-27 13:02:00

回答

1

三種選擇:

  1. 編輯視圖可以重新選擇基於實體從另一種觀點的PK從自己的上下文工作站。
  2. 可以Detach從列表視圖中的工作站,然後將其Attach到編輯視圖。
  3. 如果列表視圖是隻讀的,則可以使用MergeOption.NoTracking來防止上下文跟蹤更改。您仍然需要將其附加到編輯上下文。
+0

@Craig,試圖分離,但它會導致對象圖的其餘部分被丟棄。 – David 2010-10-27 13:53:39

+0

分離,不丟棄。不是一回事。無論如何,對於大多數人來說,同時處理多個上下文並不直觀。我不推薦它,當你可以避免它。 – 2010-10-27 13:59:57

+0

@Craig,嘗試了選項3,但是當我附加到編輯上下文時,我得到以下異常 - ObjectStateManager中已存在具有相同鍵的對象。 ObjectStateManager不能使用同一個鍵跟蹤多個對象。 – David 2010-10-27 14:02:36

相關問題