Estoy intentando agregar una implementación de IPostLoadEventListener a mi configuración de NHibernate usando FluentNHibernate. Puedo hacerlo como se ilustra aquí:Escuchas de eventos NHibernate
how to add event listener via fluent nhibernate?
Sin embargo, la creación de una nueva matriz para reemplazar la antigua descarta por completo cualquier detector de eventos existentes. Puedo conseguir alrededor de ese modo:
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();
Pero sólo saber acerca de los detectores de eventos por defecto por recorrer el código para determinar lo que estaba sobrescribiendo. Me gustaría agregar mi oyente de eventos sin sobrescribir ningún oyente de eventos existente, pero hacerlo como lo he mostrado anteriormente me parece muy mal. Los escuchas de eventos existentes están expuestos como una matriz (en lugar de una colección o una lista, lo que tendría más sentido). ¿Hay una manera más limpia de manejar esto?
Sin embargo, esta es una publicación anterior, pero encontré un enlace interesante aquí: http://codebetter.com/petervanooijen/2015/04/13/using-nhibernate -eventlisteners-to-validate-and-audit-data/ – shankbond