2011-04-07 54 views
2

撤消更改爲綁定到表單中文本框的行。撤消對實體行所做的更改

我使用實體框架來保存和更新數據,所以我無法控制保存的內容。如果用戶在窗體上點擊取消,我希望該行的所有更改恢復到之前的狀態。

與新行相同的問題我有在開始窗體時創建的新行,在將它保存到數據庫之前如何擺脫它?

非常感謝。

回答

2

正確的方法是使用修改後的數據處理上下文,創建新的上下文並從數據庫中重新加載數據。 EF沒有任何取消更改的直接方式。如果您不想這樣做,您必須手動迭代ObjectStateManager(DbContext API中的ChangeTracker)中的實體,並根據它們的狀態將它們分開(用於添加行)或用原始值重寫實際值。如果你還修改了關係,任務將變得非常複雜,在這種情況下,遵循我以前的建議是一個好主意。

1

你可以看看交易來做出這樣的「後備」。看看page about TransactionScope,它涵蓋了C#語法中的基本內容。 TransactionScope記住對數據庫執行的操作,並可以稍後(即在同一會話中)回滾它們。

雖然這不是,但實體(發生器)的純解決方案,你必須做一些編碼。