У нас есть следующий прослушиватель событий 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 profiler показывает, что значения ModifiedDate / ModifiedBy не обновляются.
Если я обновлю постоянный код и установлю ModifiedDate вручную, Profiler покажет, что ModifiedDate обновляется.
Файл сопоставления для большинства наших организаций:
<property name="ModifiedDate" insert="false" />
Есть мысли о том, что может помешать распространению значений, установленных слушателем события, в базу данных?