Отслеживание изменений полей в Entity Framework - PullRequest
0 голосов
/ 30 августа 2011

Есть ли способ узнать, какое поле было изменено в моем объекте.

Пример проблемы: при изменении какого-либо поля даты и сохранении изменений, настраиваемых, к связанным объектам должна применяться некоторая пользовательская логика.

Я пытаюсь сделать это до context.SaveChanges();, но ObjectStateManager не дает мне всю необходимую информацию.

1 Ответ

1 голос
/ 30 августа 2011

Зачем использовать для этого ObjectStateManager? У вас есть сущности, которые имеют getter и setter, поэтому просто поместите этот логический триггер в setter. Вы также можете внедрить INotifyPropertyChanged в своей сущности и обрабатывать событие, когда требуемое свойство изменяется за пределами сущности.

В противном случае вы должны использовать ObjectStateManager get ObjectStateEntry для сущности и сравнить ее CurrentValues и OriginalValues. Но это в основном неправильный подход. Логика должна запускаться кодом в сущности.

...