实体框架 - 如何为任何财产筹集OnChanging?

时间:2010-08-11 16:44:02

标签: c# wpf entity-framework mvvm entity-framework-4

在WPF / EF4.0 / MVVM应用程序中,我有一个编辑Customer实体的View。在我的CustomerViewModel中设置属性“bool IsCustomerInEditMode”的最佳方法是什么,而不是对实体的每个单独属性采取OnChanging / OnChanged部分方法?据我所知,没有OnEntityChanging方法......

谢谢!

编辑:答案:EntityState

1 个答案:

答案 0 :(得分:3)

编辑: 在你的帖子中回答你的问题(设置bool IsCustomerInEditMode的最佳方法) -

订阅entity.PropertyChanging事件,在其中设置IsCustomerInEditMode == true; 订阅entity.PropertyChanged事件,在其中设置IsCustomerInEditMode == false;

我认为InstanceOfYourCustomer.PropertyChanging和InstanceOfYourCustomer.PropertyChanged您正在寻找的事件。对于实体上的每个生成属性,如果属性发生更改,事件将触发(除非您使用部分类向实体添加其他属性,在这种情况下,您需要在这些属性的setter中添加对ReportPropertyChanging和ReportPropertyChanged的调用)。

http://msdn.microsoft.com/en-us/library/system.data.objects.dataclasses.structuralobject.propertychanged.aspx

http://msdn.microsoft.com/en-us/library/system.data.objects.dataclasses.structuralobject.propertychanging.aspx

我正在使用EF4,并查看我的Model.Designer.cs文件...我的所有实体的属性'setter都调用ReportPropertyChanging和ReportPropertyChanged ...这将触发您实体上的PropertyChanging和PropertyChanged事件,以及args甚至会告诉你提出改变事件的具体属性。