2011-07-07 132 views
3

如何在實際刪除實體之前更新實體中包含的審覈信息?我正在研究從DbContext派生的類。刪除前更新實體

我試圖通過改變狀態修改,然後將更新的信息,然後調用base.SaveChanges(),然後將其標記爲刪除。當我在設置更新的信息後嘗試調用SaveChanges時,問題就出現了。看來,關係的其他對象被標記爲已刪除,我得到這個例外:

"A relationship from the 'ChildrenEntity' AssociationSet is in the 'Deleted' state. Given multiplicity constraints, a corresponding 'ParentEntity' must also in the 'Deleted' state." 

謝謝!

回答

2

是的,這是有問題的,你可能找不到那麼在使用之前刪除數據庫中的觸發器更好的辦法。如果你要處理它在應用程序的工作方式將是:

  • 迭代都在context.ObjectStateManager.GetObjectStateEntires記錄和存儲實際狀態每次進入一些臨時數據結構。
  • 將所有條目設置爲未更改狀態,但首先要修改的條目除外。
  • 呼叫SaveChanges首次
  • 迭代所有國家再次條目並設置他們的狀態存儲在臨時數據結構
  • 呼叫SaveChanges再次

你應該做的整個操作TransactionScope