Я пересматриваю и повторно реализую код, который заставил меня задать этот вопрос про аудит данных в NHibernate. Однако на этот раз я хочу использовать . / questions / 15917 / data-auditing-in-nhibernate-and-sqlserver / 142767 # 142767 "> предложение и реализовать ISaveOrUpdateEventListener (новое в NHibernate 2.x)
Я хочу добавить строку в базу данных для каждого изменения каждого свойства со старым значением и новым, поэтому позже в пользовательском интерфейсе я могу сказать что-то вроде «Пользователь Боб изменил свойство Wibble с A на B 9 марта 2009 года. в 21:04 "
Как лучше всего сравнить состояние объекта, чтобы определить, какие свойства объекта изменились?
Вы можете получить загруженное состояние объекта следующим образом:
public void OnSaveOrUpdate(SaveOrUpdateEvent saveOrUpdateEvent)
{
object[] foo = saveOrUpdateEvent.Entry.LoadedState;
}
И я полагаю, что мог бы использовать отражение, чтобы определить, какие свойства изменились, но я покопался и не нашел подходящего набора свойств для сравнения. Я бы подумал, что будет метод GetChangedProperties () или что-то в этом роде.
Я всегда мог получить старый объект из базы данных в том виде, как он есть, и сравнить его, но это еще один удар по базе данных, и в этом сценарии он может показаться тяжелым.
В каком направлении лучше всего двигаться?
P.S. Если это имеет значение, это проект архитектуры ASP.NET-MVC / S # arp.