取消并放弃实体框架和WPF中的更改

时间:2012-08-10 19:54:39

标签: wpf entity-framework architecture mvvm

我正在开发一个系统,用户可以在其中填写表单并将此信息存储在数据库中。在其中一个屏幕中,我有以下流程:

  • 在项目中,他可以添加多个订单。
  • 每个添加的订单都会打开一个配置屏幕,可以设置订单的内部信息。此外,还可以在订单中添加商品。
  • 每个添加的项目都会打开一个配置屏幕,允许用户设置内部信息。

总而言之,流程是项目 - >订单 - >项目,其中“A - > B”表示A包含0,1或更多Bs。

正在使用WPF和Entity Framework开发此项目来管理数据库访问。我将实体数据库映射中的实体直接绑定到屏幕中。这样我们就可以在WPF中获得一些“优势”,例如,因为非空字段被涂成红色。而且,代码更简单。保存项目时,实体仅更新(或添加)到数据库。因此,可以编辑项目,然后可以编辑订单,只有在保存项目时才会保存订单,因为它们取决于要保存的项目ID。

但是,直接使用映射实体存在一个很大的问题:假设用户在订单中编辑了一个Item。然后,他再次编辑它,但这一次,用户按下“取消”而不是按“OK”。必须恢复更改。但是,之前的状态丢失了,因为它没有在数据库中更新,并且由于WPF绑定而被更改。

防止此问题的最佳方法是什么?我不知道创建克隆是否在Entity Framework中运行良好。创建仅在单击confirm命令时将其值传递给对象的变量将违反MVVM模式,并且会让我失去我已经讨论过的“优势”。

请帮助我!

谢谢!

0 个答案:

没有答案