Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/wpf/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
实体框架代码第一个WPF-取消更改_Wpf_Entity Framework - Fatal编程技术网

实体框架代码第一个WPF-取消更改

实体框架代码第一个WPF-取消更改,wpf,entity-framework,Wpf,Entity Framework,我有一个WPF应用程序,它使用EF4.3.1连接到DB。 我正在以一种形式显示一个实体,用户可以在其中编辑值并点击save或cancel。 问题是,当用户点击cancel时,更改不会回滚,该实体仍会被上下文跟踪,并在其他操作调用saveChanges()时保存到数据库中。 我想知道您是否可以为我提供一个实现EF/WPf客户机-服务器应用程序的好来源 另一个副作用是,如果用户打开两个表单并点击其中一个的save。。另一个也被救了。。显然,我没有正确地使用它。在这个场景中,我一直在做的是制作实体的副

我有一个WPF应用程序,它使用EF4.3.1连接到DB。 我正在以一种形式显示一个实体,用户可以在其中编辑值并点击save或cancel。 问题是,当用户点击cancel时,更改不会回滚,该实体仍会被上下文跟踪,并在其他操作调用saveChanges()时保存到数据库中。 我想知道您是否可以为我提供一个实现EF/WPf客户机-服务器应用程序的好来源


另一个副作用是,如果用户打开两个表单并点击其中一个的save。。另一个也被救了。。显然,我没有正确地使用它。

在这个场景中,我一直在做的是制作实体的副本,并将副本交给用户进行编辑。当用户点击cancel时,我只是将副本丢弃。保存时,我将使用副本中的值覆盖原始实体的属性(现在由用户修改),保存原始实体并将副本丢弃。

这样做会起作用。。如果有很多字段和嵌套对象,并且字段更多,那么这可能不是最佳选择。如果复制对您不起作用(尽管这是我的第一个建议),您只需在调用SaveChanges()之前,通过再次从数据库获取用户取消的对象来替换它即可。这将导致对数据源的调用,这就是为什么我认为复制是最好的方法。