Entity Framework - как поднять OnChanging для любого свойства? - PullRequest
1 голос
/ 11 августа 2010

В приложении WPF / EF4.0 / MVVM у меня есть View, который редактирует сущность Customer. Каков наилучший способ установить свойство "bool IsCustomerInEditMode" в моем CustomerViewModel, если не использовать частичные методы OnChanging / OnChanged для каждого отдельного свойства сущности? Насколько я знаю, метода OnEntityChanging нет ...

Спасибо!

Редактировать: Ответ: EntityState

1 Ответ

3 голосов
/ 11 августа 2010

Редактировать: чтобы ответить на ваш вопрос в вашем посте (лучший способ установить bool IsCustomerInEditMode) -

Подписаться на событие entity.PropertyChanging, внутри него установить IsCustomerInEditMode == true;Подпишитесь на событие entity.PropertyChanged, в нем установите IsCustomerInEditMode == false;

Я думаю, InstanceOfYourCustomer.PropertyChanging и InstanceOfYourCustomer.PropertyChanged искомые события.Для каждого сгенерированного свойства в вашей сущности событие вызывается, если свойство изменяется (если только вы не используете частичные классы для добавления дополнительных свойств к вашей сущности, и в этом случае вам нужно будет добавить вызовы 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 ... все мои сущностисеттеры свойств вызывают ReportPropertyChanging и ReportPropertyChanged ..., которые будут запускать события PropertyChanging и PropertyChanged для вашей сущности, а аргументы даже скажут вам, какое конкретное свойство вызвало измененное событие.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...