NHibernate Передача сеанса в хранилище - PullRequest
1 голос
/ 24 июня 2009

Как бы я мог передать сеанс в класс репозитория?

Допустим, у меня есть два проекта.

1) TestSuite 2) BusinessObjects

Хранилище содержится в проекте BusinessObjects. Сессия NHibernate открывается в проекте TestSuite. Теперь я хочу использовать тот же сеанс, поскольку проект TestSuite запускает транзакцию в этом сеансе. В настоящее время я использую следующее:

var repository = new CustomerRepository (_session);

Конечно, это выглядит ужасно! Я думаю, что каким-то образом инфраструктуру внедрения зависимостей можно подключить и предоставить мне объект ISession без необходимости передачи в хранилище

1 Ответ

1 голос
/ 24 июня 2009

В нашей службе WCF мы фактически используем UnitOfWork, который оборачивает одну операцию и сохраняет ISession для этой операции.

Репозитории знают, как получить ISession из текущей единицы работы, под которой они работают.

С точки зрения тестирования у нас есть базовый тестовый класс, от которого наследуется любой тестовый класс, который содержит тесты, которые касаются базы данных. Затем мы контролируем начало и окончание единицы работы в testfixturesetup. Сработало довольно хорошо для нас, как только вы привыкнете к тому факту, что в версии NUnit, которую мы используем, разрыв не гарантированно запускается (в случае необработанного исключения во время установки или тестирования).

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