2010-06-29 5 views
0

Я создаю многопользовательское приложение ASP.NET с использованием NHibernate (общая схема). Я намеревался использовать слушателей событий NHibernates для проверки/изменения объектов до сохранения, чтобы гарантировать, что текущий идентификатор арендаторов будет сохранен против объекта.NHibernate ISession специальный прослушиватель событий

Маркер аутентификации, содержащий идентификатор арендатора, управляется выше и передается в слой данных.

Моя проблема заключается в том, что прослушиватели событий настроены на конфигурацию NHibernate, а не на конкретную ISession. Это означает, что нет возможности передавать какие-либо идентификаторы для использования, хотя я могу получить доступ к ISession, вызвавшему событие.

Как я могу перейти к передаче определенных данных ISession в Слушатель событий?

ответ

3

Возможно, вы сможете сделать это с помощью IInterceptor implementation, потому что ISessionFactory имеет перегруженный метод OpenSession, который принимает IInterceptor. Использование было бы примерно таким:

var interceptor = new MyInterceptor(tenantId); 
var session = factory.OpenSession(interceptor); 

К сожалению, перегрузки, принимающей слушателей, отсутствуют.

+0

Спасибо, Джейми, похоже, что это может сделать трюк, я собираюсь попробовать его сейчас. – Matt

Смежные вопросы