Я пытаюсь добавить реализацию IPostLoadEventListener в мою конфигурацию NHibernate, используя FluentNHibernate. Я могу сделать так, как показано здесь:прослушиватели событий NHibernate
how to add event listener via fluent nhibernate?
Однако создание нового массива, чтобы заменить старый один полностью отбрасывает все существующие обработчики событий. Я могу обойти это примерно так:
return Fluently.Configure()
.Database(config)
.Mappings(m => m.AutoMappings.Add(mappings))
.ExposeConfiguration(cfg =>
{
cfg.EventListeners.PostLoadEventListeners =
new IPostLoadEventListener[] {
new UtcDateEventListener(),
new DefaultPostLoadEventListener() // <<< this one is the default
};
cfg.EventListeners.SaveOrUpdateEventListeners =
new ISaveOrUpdateEventListener[] {
new UtcDateEventListener(),
new DefaultSaveOrUpdateEventListener() // <<< this one is the default
};
})
.BuildConfiguration()
.BuildSessionFactory();
Но я знаю только о слушателях событий по умолчанию с помощью пошагового кода, чтобы определить, что я перезапись. Я хотел бы добавить своего слушателя событий, не перезаписывая никаких существующих прослушивателей событий, но делать это так, как показано выше, кажется очень вонючим, для меня. Существующие прослушиватели событий отображаются как массив (а не коллекция или список, что будет иметь больше смысла). Есть ли более чистый способ справиться с этим?
Однако это старый пост, но я нашел интересную ссылку здесь: http://codebetter.com/petervanooijen/2015/04/13/using-nhibernate -eventlisteners-to-validate-and-audit-data/ – shankbond