有幾種方法撤消在實體框架的變化:實體框架撤消更改對象的引用
- 重新創建對象上下文
- 分離/從上下文中附上
- 刷新:上下文.MyEntity.Context.Refresh(RefreshMode.StoreWins,myobject);
該應用程序具有選項卡式界面,其中一個選項卡顯示不同的實體對象。用戶可以將標籤添加到對象(m:n關係)。我嘗試了所有我能找到的東西,我無法讓Entity Framework撤消用戶對m:n關係所做的更改。 例如,用戶添加一個標籤(m:n對象被創建)。如果用戶單擊「取消」,則該對象應保存到數據庫中。
重新創建上下文可能會導致其他選項卡中的數據丟失。 分離/附加和刷新()僅在對象本身發生更改時才起作用,並且沒有相關對象在對象的列表中添加/刪除。
我想過爲每個選項卡使用不同的上下文對象,但這會導致數據不同步(例如,用戶單擊列表並打開新選項卡。更改對象後,列表將不會不會自動更新)
我認爲你是對的。我嘗試撤消的「工作單元」對於EF來說太複雜了。我改變了應用程序,爲每個新標籤使用不同的上下文。所以我現在唯一需要解決的就是如何刷新父列表。但多數民衆贊成在WPF的事情... – fnx 2012-08-09 17:55:19