0

我使用實體框架與存儲庫和工作模式單元, 我在MVC項目上工作我試圖在編輯操作(主細節)中編輯可變長度集合,如本文中的示例http://ivanz.com/2011/06/16/editing-variable-length-reorderable-collections-in-asp-net-mvc-part-1爲什麼實體框架實體主細節實體編輯

我的問題是每次提交表單都要編輯動作子集合數據庫表重複的子集合行並將舊的外鍵設置爲null,併成功修改主實體。 我檢查主實體的實體狀態是否被刪除(子集合也被刪除)。

我已經解決了循環拋出子集合並將其狀態更改爲已修改或添加或刪除的問題,但是我需要知道什麼是自動檢測更改或不更改實體狀態以解決問題的最佳解決方案。

感謝

回答

0

EF上下文不知道是什麼改變了你的客戶沒有和EF沒有任何機制來發現這些變化。只有兩種方法來處理這種情況:

  • 手動設置對象圖,你就知道它的每個實體的狀態(這是不是解決辦法是official solution)。
  • 首先從數據庫加載實體圖並使用TryUpdateModel讓MVC按照here所述合併新狀態和舊狀態。
+0

我嘗試使用TryUpdateModel做工精細,但還是一個問題,它重複在數據庫表的子行,每次更新操作執行復制它的子集db錶行,把所有的舊行外鍵爲null,新具有正確的父外鍵值的行。 –

+0

你是否正在用它的孩子加載實體? –

+0

是與包含方法 –