Вы должны понять что-то важное, прежде чем использовать Слушатели в NHibernate.Он будет работать над всеми объектами, отображенными с точки зрения NHibernate
.Если вы напишите на нем плохой код, это может ухудшить производительность вашего приложения.Учитывая это, вы можете определить слушателя для объекта NHibernate
Configuration
.Вы определяете класс, который реализует интерфейс из желаемых слушателей NHibernate, и реализуете метод.Добавьте экземпляр этого класса в конфигурацию NHibernate.(Я не тестировал приведенный ниже код, это всего лишь черновик). Например:
using NHibernate;
using NHibernate.Event;
using NHibernate.Persister.Entity;
public class EmployeePostLoadListener : IPostLoadEventListener
{
public virtual void OnPostLoad(PostLoadEvent postloadEvent)
{
if (postloadEvent.Entity is Employee)
{
var employee = (Employee)postloadEvent.Entity;
// do what you want with the object
employee.Gender = null;
}
}
}
В конфигурации NHibernate вы можете добавить этот слушатель, например, так:
NHibernate.Cfg.Configuration cfg = new NHibernate.Cfg.Configuration();
cfg.EventListeners.PostLoadEventListeners = new IPostLoadEventListener[] {new EmployeePostLoadListener()};
Подробнее о EventListener и Interceptors см. В документации .