Я настроил ModifiedDate в моей конфигурации NHibernate для большинства моих объектов. Каждый объект наследует это:Игнорировать поле в слиянии NHibernate
public interface IAuditable {
string ModifiedBy { get; set; }
DateTime ModifiedDate { get; set; }
}
Каждый класс отображает эти поля в базе данных, так как мы хотим, чтобы эти значения считываются в каждой сущности. Я использую плавные настройки и классы карт.
Я внедрил IPreInsert
и IPreUpdate
прослушиватели событий, чтобы обновить измененную и измененную дату. Таким образом, значения аудита будут обновляться рамками. Я использовал здесь код: http://ayende.com/blog/3987/nhibernate-ipreupdateeventlistener-ipreinserteventlistener
Как я могу гарантировать, что независимо от того, какие значения находятся в ModifiedBy и ModifedDate, они никогда не считаются грязными и сами не загрязняют объект? Сущность должна быть грязной только тогда, когда изменились другие поля.
Вы можете искать, чтобы создать [пользовательский NHibernate слушателя событий] (http://www.codinginstinct.com/2008/04/nhibernate-20-events-and-listeners.html). Вы можете создать тот, который наследуется от 'NHibernate.Event.Default.DefaultMergeEventListener' и обрабатывать эти даты явно. – valverij