Исходя из моего предыдущего вопроса Как реализовать LastUpdate в сущностях NHibernate? .
В моей проверенной таблице в моей базе данных есть два столбца:
created datetime default getdate() not null
(дата создания этой строки)
lastUpdate datetime null
(дата и время последнего обновления этой строки)
Я хочу создать прослушиватель для обновлений только в NHibernate, потому что ядро базы данных заботится о новых записях с ограничением по умолчанию.Я попытался создать пользовательский прослушиватель с помощью этого кода:
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
(только *) нет1030 * событий или PreUpdate
или PostUpdate
)
Мне интересно, следует ли мне использовать событие PreUpdate
и заставить моего слушателя наследовать от DefaultUpdateEventListener
, но тогда я не уверен, какой метод янужно переопределить.Нет Update
метода для переопределения.