首页 新闻 会员 周边

关于Linq GetChangeSet()

0
悬赏园豆:100 [已关闭问题] 关闭于 2008-08-19 11:28
<P>在用Linq做数据操作时.我做了一些新增(InsertOnSubmit),修改,删除(DeleteOnSubmit)等操作,我并没有马上进行DataContext.SubmitChanges()的操作,而是希望撤消删除操作,却发现,我根本无法从DataContext.GetChangeSet().Deletes的集合中移除相应的对象,使得我根本无法撤消.请问有什么方法,可以让我实现我的目的?</P>
问题补充: 我是需要在同一個DataContext裏管理,因為不這樣的話,我Dispose了DataContext的話,那我要再重新取數據。
iSun自由软件团件的主页 iSun自由软件团件 | 初学一级 | 园豆:105
提问于:2008-08-14 22:15
< >
分享
所有回答(2)
0
扔掉原来的DataContext(不要调用它的SubmitContext方法),新建一个DataContext对象并使用新的即可.
deerchao | 园豆:8367 (大侠五级) | 2008-08-14 23:32
0
GetChangeSet会拿到一个ChangeSet对象,其中的Inserts, Deletes和Updates都是ReadOnlyCollection<object>,能做的方法只有 1.把Inserts里的对象拿出来保存成一个List 2.把Updates里的也拿出来保存一个List 3.当然是把Deletes的也拿来保存为一个List 4.把原来的DataContext给Dispose掉 5.新建一个DataContext 6.把原来的Inserts全部用InsertOnSubmit加进去(当然你不要的就别加了) 7.原来的Updates全部用Attach(obj, true)(同样不要的就别Attach) 8.原来的Deletes用DeleteOnSubmit(不要的别Delete) 9.SubmitChanges 其中可能Attach会出问题,说Entity已经被Attach到另一个DataContext,具体的解决办法是Clone一个
Gray Zhang | 园豆:17610 (专家六级) | 2008-08-14 23:44
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册