Определение того, какие поля изменились при привязке - PullRequest
0 голосов
/ 29 мая 2009

Как определить, какие поля изменились после редактирования модели

Ответы [ 2 ]

1 голос
/ 30 мая 2009

Вы можете реализовать INotifyPropertyChanged на своих объектах. Вам нужно было бы запустить событие PropertyChanged для каждого свойства ... так что вам нужно будет выполнить некоторый рефакторинг, чтобы это работало. Это единственный встроенный способ добиться этого с .NET.

Если вы не хотите реализовывать INotifyPropertyChanged вручную, вы можете использовать PostSharp для обновления ваших классов и настройки свойств во время компиляции. Однако это потребует значительно более сложных усилий заранее.

1 голос
/ 30 мая 2009

Если вы используете Linq to SQL, метод GetModifiedMembers принимает аргумент tybe Object и возвращает массив объектов System.Data.Linq.ModifiedMemberInfo. Каждый класс Table в DataContext имеет метод GetModifiedMembers, который можно вызывать для любого объекта.

http://msdn.microsoft.com/en-us/library/system.data.linq.itable.getmodifiedmembers.aspx

В Entity Framework, используя ObjectStateManager, можно получить доступ ко всей этой информации об изменениях, такой как состояние объекта (добавлено / изменено / удалено), измененные свойства, исходные и текущие значения

IEnumerable<ObjectStateEntry> changes = 
        this.ObjectStateManager.GetObjectStateEntries(
        EntityState.Added | EntityState.Deleted | EntityState.Modified);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...