Как загрузить старый объект состояния в событии NHibernate OnFlushEntity - PullRequest
1 голос
/ 29 марта 2012

У меня есть класс с именем

public class AuditFlushEntityEventListener : DefaultFlushEntityEventListener 

Этот класс переопределяет OnFlushEntity.Итак, у меня есть FlushEntityEvent.Мне было интересно, как я могу восстановить старый объект состояния во время обновления.

До сих пор у меня просто есть @event.Entity (объект моего домена) и список объектов в @event.EntityEntry.LoadedState

* Nhibernate 3.0, и я работаю с причиной событий this и использование FlushEntity вызывают this .

1 Ответ

1 голос
/ 02 апреля 2012

@event.LoadedState содержит предыдущие значения в массиве, @event.PropertyValues содержит текущие значения.Соответствующий persister.PropertyNames содержит имена свойств в том же порядке и persister.PropertyTypes типы NH.

Пример:

for (int i = 0; i < @event.PropertyValues.Length; i++)
{
  Console.WriteLine("Property {0} : {1} => {2}",
    @event.EntityEntry.Persister.PropertyNames[i],
    @event.LoadedState[i],
    @event.PropertyValues[i]);
}

Я не уверен, является ли "LoadedState" на самом делесостояние, которое было загружено.Это может быть состояние в БД, которое может меняться с каждым сбросом.Проверь это.Может возникнуть необходимость взять «первое загруженное состояние», которое вы получаете из события.

Примечание: я написал «автоматическую запись журнала аудита».Со сложными сущностями это становится очень сложным.Наиболее сложным является вложение объектов (родитель - потомок).Событие в глубине NH.Вы должны обращаться с компонентами и коллекциями.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...