2009-07-21 13 views
2

我的WPF應用程序中有一個組合框,它是我的視圖模型中的對象列表的數據綁定。當用戶更改所選對象並在保存之前選擇另一個項目時,我需要清除所做的更改。如何清除LinqToSql中的更改?

我想我可以使用dataContext.GetChangeSet()。Updates.Clear()但由於某種原因集合是隻讀的。

我也試過使用dataContext.Refresh,但這不起作用或者因爲該對象不存在於數據庫中,我從SP手動創建它。

請幫忙。謝謝。

回答

2

最好的辦法是重新查詢到一個單獨的數據上下文。你可以通過使用DeleteOnSubmit(和相反)否定插入(從變更集),但我寧願不,我自己。

+0

所以你說基本上建立一個新的datacontext和去拿數據呢?如果是這樣,那麼這是非常緩慢的,因爲我的收藏有很多物品。我希望有一個對象的副本保存在某處,以便可以回滾任何更改(如撤消功能)。 – HAdes 2009-07-27 14:19:40

+0

更改跟蹤器中有一箇舊版本;但是數據上下文的想法是它是一個工作單元;不是數據庫。國際海事組織,這聽起來像你只是加載太多的數據到它開始... – 2009-07-27 14:22:11

3

除了使用使用DeleteOnSubmit(或DeleteAllOnSubmit)馬克的方法來刪除插件,下面將實際撤銷任何更新藏漢:

// clears any updates. 
ChangeSet changes = dataContext.GetChangeSet(); 
dataContext.Refresh(RefreshMode.OverwriteCurrentValues, changes.Updates);