2010-11-03 129 views
3

我目前正在測試我希望構建的簡單應用的實體框架4。實體框架4保存並取消

我搜索了高和低的答案,沒有任何運氣!

我的問題是如何在記錄的基礎上保存和取消更改?在上下文中使用保存更改方法會將所有更改保留到數據庫中。有沒有辦法控制這個?

感謝 加里

+0

你的問題有點不清楚。您希望取消哪些更改?如果你想取消,爲什麼要把他們放在第一位呢?一些代碼與你正在嘗試/試圖做的事情可能有所幫助。 – Yakimych 2010-11-03 20:31:39

回答

7

你不應該使用在應用程序的生命週期的所有業務的單一數據上下文。爲每個想要創建的原子操作分配一個會話(創建一個數據上下文)。調用SaveChanges來提交操作,只需處理上下文而不保存更改以「取消」操作。

+0

我有這麼多的代碼試圖檢測更改並撤消與相關的對象。在看到這麼多的異常後,我決定尋找解決方案並找到答案。簡單地處理數據上下文。榮譽給你,先生。 – 2012-05-10 13:15:56

0

聽起來像你想以一種斷開的方式工作。

  1. 使用NoTracking選項從數據上下文加載所有員工。這將加載實體並立即斷開與數據上下文的連接。
  2. 關閉數據上下文。
  3. 當您點擊保存時,創建一個新的數據上下文並將您希望保存的聯繫人附加到新的數據上下文;您將有能力將聯繫人標記爲已修改。
  4. SaveChanges on the context。它會向持久性商店發送更新,例如該聯繫人的SQL。
  5. 殺死上下文。
  6. 轉到步驟3

您可能還需要尋找到不同的EF模板,如自我跟蹤實體可以使您的生活更容易一點,因爲它們生成可以跟蹤更改自己數據以外的實體上下文;然而,這可能是一個簡單的應用程序矯枉過正。