Есть ли у EntityObjects событие PropertyChanged, которое позволяет мне получить доступ к OldValue и NewValue? - PullRequest
2 голосов
/ 22 декабря 2011

Я использую Entity Framework для своего слоя Model, и я хотел бы подключить событие PropertyChanged, которое изменяет другое свойство на основе OldValue и NewValue этого свойства. Есть ли встроенный метод, который я мог бы подключить для этого?

Основная логика в моем PropertyChanged событии -

if (oldValue.DefaultPropertyA == this.PropertyA)
    this.PropertyA = newValue.DefaultPropertyA;

1 Ответ

2 голосов
/ 22 декабря 2011

У вас есть частичный метод OnPropertyChanging.Там у вас будет доступ к новому значению.

Старое значение - это значение свойства на тот момент, поэтому вы можете получить к нему доступ только через обычное свойство.

Структура в вашемФайл сгенерированного кода выглядит следующим образом:

    public global::System.String Property
    {
        get
        {
            return _Property;
        }
        set
        {
            OnPropertyChanging(value);
            ReportPropertyChanging("Property");
            _Property = StructuralObject.SetValidValue(value, false);
            ReportPropertyChanged("Property");
            OnPropertyChanged();
        }
    }

    private global::System.String _Property;
    partial void OnPropertyChanging(global::System.String value);
    partial void OnPropertyChanged();

Как видите, вы можете использовать частичные методы OnPropertyChanging и OnPropertyChanged, чтобы получать уведомления об изменениях свойств.

Если вы хотите изменить значениеиз свойства, которое устанавливается, вы не можете сделать это частичным методом.Если вы действительно этого хотите, вам следует изменить шаблон T4, чтобы внедрить этот код в вашу собственность, или использовать Code First, чтобы у вас был прямой доступ

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