Следующее из моего предыдущего вопроса How to implement LastUpdate in NHibernate Entities?.Как настроить прослушиватели событий NHIbernate для обновления и сохранения?
У меня есть две колонки на моих аудированной таблиц в моей базе данных:
created datetime default getdate() not null
(дата создания этой строки)lastUpdate datetime null
(даты и времени эта строка была обновлена)
Я хочу создать слушателя для только обновления в NHibernate, поскольку d Двигатель atabase позаботится о новых записях с ограничением по умолчанию. Я пытался создать специальный приемник с этим кодом:
public class CustomUpdateEventListener : DefaultSaveOrUpdateEventListener
{
protected override object PerformSaveOrUpdate(SaveOrUpdateEvent evt)
{
var entity = evt.Entity as IAuditableEntity;
if (entity != null)
{
ProcessEntityBeforeUpdate(entity);
}
return base.PerformSaveOrUpdate(evt);
}
internal virtual void ProcessEntityBeforeUpdate(IAuditableEntity entity)
{
entity.UpdateDate = DateTime.Now;
}
}
и он прекрасно работает для обновлений, но он также получает бежать за Save
событий (при добавлении новых строк в базу данных). Я не хочу, чтобы он запускал новые строки. Я попытался изменить код, чтобы прослушать только Update
событий, но я не могу его обработать.
Я попытался изменить класс наследовать от DefaultUpdateEventListener
но нет никаких UpdateEvent
(только SaveOrUpdate
события или PreUpdate
или PostUpdate
)
мне интересно, если я должен использовать PreUpdate
событие и сделать мой слушатель наследоваться от DefaultUpdateEventListener
но то я не уверен, какой метод мне нужно переопределить. Для переопределения нет Update
.
Я знаю, что это старый пост, но вы столкнулись с этим сообщением в блоге? http://ayende.com/blog/3987/nhibernate-ipreupdateeventlistener-ipreinserteventlistener – Rippo