撤消对实体行所做的更改

时间:2011-04-07 02:46:04

标签: .net entity-framework

撤消对绑定到表单中文本框的行的更改。

我使用实体框架来保存和更新数据,因此我无法控制保存的内容。如果用户在表单上点击取消,我希望对该行的所有更改都恢复到以前的位置。

我对新行有同样的问题我在启动表单时创建了新行,如何在将其保存到数据库之前将其删除?

非常感谢。

2 个答案:

答案 0 :(得分:2)

正确的方法是使用修改后的数据配置上下文,创建新上下文并从数据库重新加载数据。 EF没有任何直接取消更改的方法。如果您不想这样做,则必须手动迭代ObjectStateManager(DbContext API中的ChangeTracker)中的实体,并根据其状态分离它们(添加行)或使用原始值重写实际值。如果您还修改了关系,那么任务将变得非常复杂,在这种情况下,遵循我以前的建议是非常好的。

答案 1 :(得分:1)

您可以查看“交易”以进行此类“后备”。查看涵盖C#语法基础的page about TransactionScope。 TransactionScope记住对数据库执行的操作,并且可以稍后回滚它们(即在同一会话中)。

这不是Entity(Generator)的纯粹解决方案,你必须进行一些编码。