Questa è abbastanza “scomoda” se usate gli event listener di NHibernate da codice dovete stare molto attenti a non rimuovere quelli di default:

var fc = container.GetService<FluentConfiguration>();
fc.ExposeConfiguration( cfg =>
{
    cfg.EventListeners.PreInsertEventListeners = new[] { new MySaveEventListener() };
} );

Quello che succede infatti, e pure giustamente, è che se nella lista degli eventi c’è già qualcuno lo state semplicemente sovrascrivendo e questo è poco bello :-)

Una soluzione semplice ed elegante è questo Extension Method che vi permette di scrivere in maniera molto naturale questo:

var fc = container.GetService<FluentConfiguration>();
fc.ExposeConfiguration( cfg => 
{
    cfg.AddListener( e => e.PreInsertEventListeners, new MySaveEventListener() );
});

ne riparliamo prossimamente

.m