NHibernate ISession специфический слушатель события - PullRequest
0 голосов
/ 29 июня 2010

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

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

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

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

1 Ответ

4 голосов
/ 29 июня 2010

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

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

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...