NHibernate Event Listeners

I am trying to add an implementation of IPostLoadEventListener to my NHibernate configuration using FluentNHibernate. I can do this as shown here:

how to add an event listener via free nhibernate?

However, creating a new array to replace the old one completely discards any existing event listeners. I can get around this like this:

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();

, , , . , , , , , . ( , ). ?

+5
2

- :

using System.Linq;

...

var list = cfg.EventListeners.PostLoadEventListeners.ToList();
list.Add(new MyPostLoadEventListener());
cfg.EventListeners.PostLoadEventListeners = list.ToArray();

:)

+5

...

public class UtcDatePostLoadEventListener : DefaultPostLoadEventListener
{
    public override void OnPostLoad(PostLoadEvent @event)
    {
        base.OnPostLoad(@event);
    }
}

public class UtcDateSaveOrUpdateEventListener : DefaultSaveOrUpdateEventListener
{
    public override void OnSaveOrUpdate(SaveOrUpdateEvent @event)
    {
        base.OnSaveOrUpdate(@event);
    }
}

, , . , PreUpdateEventListener ...

+1

All Articles