2012-05-08 59 views
1

我有一个WPF应用程序,它使用EF4.3.1来实现数据库。 我在窗体中显示一个实体,用户可以在其中编辑值并点击保存或取消。 问题在于,当用户点击取消时,更改不会回滚,实体仍然通过上下文跟踪并在saveChanges()被其他操作调用时保存到数据库。 我想知道如果你能指点我一个实现EF/WPF客户端服务器应用程序的好源。实体框架代码第一个WPF - 取消更改

另一个副作用是,如果用户有两个窗体打开并命中保存在一个..另一个得到保存..清楚我没有正确使用它。

回答

3

我在这种情况下一直在做的是,我制作实体的副本并将副本提供给用户进行编辑。当用户点击取消时,我只是简单地复制副本。在保存时,我用副本中的值覆盖原始实体的属性(现在由用户修改),保存原始文件并将副本废弃。

+0

虽然这可以工作..当你有很多字段和更多字段的嵌套对象时,它可能不是最佳 – skywqr

+1

如果制作副本不适合你(虽然这将是我的第一个建议),但你在调用SaveChanges()之前,可以非常简单地通过从数据库中再次获取对象来取代用户已取消的对象。这将导致对数据源的调用,但为什么我认为制作副本是最好的方法。 – Tyrsius

相关问题