我的WPF应用程序中有一个组合框,它是我的视图模型中的对象列表的数据绑定。当用户更改所选对象并在保存之前选择另一个项目时,我需要清除所做的更改。如何清除LinqToSql中的更改?
我想我可以使用dataContext.GetChangeSet()。Updates.Clear()但由于某种原因集合是只读的。
我也试过使用dataContext.Refresh,但这不起作用或者因为该对象不存在于数据库中,我从SP手动创建它。
请帮忙。谢谢。
我的WPF应用程序中有一个组合框,它是我的视图模型中的对象列表的数据绑定。当用户更改所选对象并在保存之前选择另一个项目时,我需要清除所做的更改。如何清除LinqToSql中的更改?
我想我可以使用dataContext.GetChangeSet()。Updates.Clear()但由于某种原因集合是只读的。
我也试过使用dataContext.Refresh,但这不起作用或者因为该对象不存在于数据库中,我从SP手动创建它。
请帮忙。谢谢。
最好的办法是重新查询到一个单独的数据上下文。你可以通过使用DeleteOnSubmit
(和相反)否定插入(从变更集),但我宁愿不,我自己。
除了使用使用DeleteOnSubmit(或DeleteAllOnSubmit)马克的方法来删除插件,下面将实际撤销任何更新藏汉:
// clears any updates.
ChangeSet changes = dataContext.GetChangeSet();
dataContext.Refresh(RefreshMode.OverwriteCurrentValues, changes.Updates);
所以你说基本上建立一个新的datacontext和去拿数据呢?如果是这样,那么这是非常缓慢的,因为我的收藏有很多物品。我希望有一个对象的副本保存在某处,以便可以回滚任何更改(如撤消功能)。 – HAdes 2009-07-27 14:19:40
更改跟踪器中有一个旧版本;但是数据上下文的想法是它是一个工作单元;不是数据库。国际海事组织,这听起来像你只是加载太多的数据到它开始... – 2009-07-27 14:22:11