如何在LINQtoSQL中撤消ChangeSet

Dra*_*ake 4 .net linq-to-sql

在我的数据层类中,我创建了一个手动刷新数据源的函数.

Public Sub DiscardAllChanges()

    _Context.Refresh(RefreshMode.OverwriteCurrentValues)

End Sub
Run Code Online (Sandbox Code Playgroud)

问题是此操作后的上下文ChangeSet仍然跟踪我手动调用InsertOnSubmit等的上一次Insertion,Deletion和Update操作.

是否有可能以某种方式清除ChangeSet?或者如果没有,你能建议我另一个解决方案吗 我是否必须在Business中创建ChangeSet图层?

Mar*_*ell 5

处理此问题的最简单方法是将其DataContext视为您的工作单位.在单个上执行相关操作的原子集DataContext,然后在成功或失败Dispose()之后执行(理想情况下通过using)并将其丢弃.

启动新的下一组操作DataContext.同样,您可以重新查询数据.

在逐个对象的基础上,您可以使用GetOriginalEntityState(在表上)获取原始值,但是您需要重新应用于"实时"对象,这不会处理删除/插入案例.