stackoverflow.com/questions/857234/audit-logging-nhibernate

есть следующий прослушиватель событий PreUpdate:

public bool OnPreUpdate(PreUpdateEvent @event)
        {
            BaseBO entity = @event.Entity as BaseBO;
            if (entity == null)
                return false;

            var operatorName = "OpName";
            var utcDateTime = DateTime.Now.ToUniversalTime();

            Set(@event.Persister, @event.State, "ModifiedBy", "Fred & Barney");
            Set(@event.Persister, @event.State, "ModifiedDate", utcDateTime);

            entity.ModifiedBy = "fred & barney";
            entity.ModifiedDate = utcDateTime;

            return false;
        }

private void Set(IEntityPersister persister, object[] state, string propertyName, object value)
        {
            var index = Array.IndexOf(persister.PropertyNames, propertyName);
            if (index == -1)
                return;
            state[index] = value;
        }

Точки останова в операторе возврата указывают, что старые / новые значения состояния и свойства объекта были обновлены до ожидаемых значений.

Однако запущенный профилировщик Sql показывает, что значения ModifiedDate / ModifiedBy не обновляются.

Если я обновлю код персистентности и установлю ModifiedDate вручную, Profiler покажет, что ModifiedDate обновляется.

Файл сопоставления для большинства наших организаций:

<property name="ModifiedDate" insert="false" />

Есть мысли о том, что может помешать распространению значений, установленных слушателем событий, в базу данных?

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

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