NHibernate IPreUpdateEventListener, IPreInsertEventListener не сохраняется в БД

Я пытаюсь внедрить простой аудит на своих объектах. Проверяемые субъекты реализуютITimestampable интерфейс, который определяетDateAdded а такжеDateModified свойства.

Я создал и зарегистрировал прослушиватель событий для заполнения этих значений. Вот полный код.

internal class TimeStampEventListener : IPreUpdateEventListener, IPreInsertEventListener
    {
        public bool OnPreUpdate(PreUpdateEvent e)
        {
            if (e.Entity is ITimestampable)
            {
                (e.Entity as ITimestampable).DateModified = DateTime.Now;
            }

            return false;
        }

        public bool OnPreInsert(PreInsertEvent e)
        {
            if (e.Entity is ITimestampable)
            {
                (e.Entity as ITimestampable).DateAdded = DateTime.Now;
            }

            return false;
        }

        public void Register(Configuration configuration)
        {
            configuration.SetListener(ListenerType.PreInsert, this);
            configuration.SetListener(ListenerType.PreUpdate, this);
        }
    }

Теперь, когда я делаю сеанс сброса, слушатель вызывается, свойства аудита установлены правильно, но большую часть времени они не сохраняются в БД. Под «большей частью времени» я подразумеваю, что очень редко значения действительно сохраняются. Я не уверен, но это похоже на первую вставку / обновление после запуска приложения, что еще более странно.

Конечно, сначала я изменяю сущность, она сохраняется, но свойство аудита - нет.

Когда я смотрю на сгенерированный SQL в профилировщике, я вижу, что NULL отправляется в запросе вместо текущего времени, поэтому я предполагаю, что это не проблема с БД. Btw. Я использую MySQL иDateAdded а такжеDateModified столбецDATE тип.

На сайте NHibernate эти свойства отображаются только как<property>, Может быть, я пропускаю какое-то "специальное" отображение для таких случаев ...?

Я полностью застрял на этом. Любая помощь приветствуется.

Ответы на вопрос(1)

Ваш ответ на вопрос