Трудные времена с Сессиями Nhibernate в контексте Контроллера и Репозитория - PullRequest
1 голос
/ 22 октября 2011

Я пытаюсь построить приложение ASP.NET MVC, используя Nhibernate и Structuremap вместе с шаблоном Repository.

Благодаря моему первоначальному подходу к этому проекту и последующему чтению я хотел, чтобы сессия Nhibernate была ограничена репозиториями, а репозитории - контроллером.Но в то же время, что касается транзакций, я хотел отделить это от методов репозитория (то есть я просто хотел вызвать session.Save ()).

Но, кажется, требуется, чтобы контроллер знало сеансе, чтобы я мог выполнить любую настройку транзакции в сеансе перед любым действием контроллера и любое сохранение в базе данных после действия, используя что-то вроде (например, методы ActionFilterAttribute BeforeExecution или AfterExecuted или события BeginRequest / EndRequest в MvcApplication.

Поэтому я думаю, что мне нужно передать текущий сеанс NHibernate как контроллеру, так и репозиторию, чтобы я мог действовать в сеансе, когда на контроллере происходят определенные действия / результаты.

Это единственный способ, которым я могу пойти по этому поводу?

Я читал блоги Айенде и целый ряд различных способов сделать это, но в случае использования шаблона хранилища это почти похоже надолжен. Я надеялся, что смогуНастройка Nhibernate / StructureMap осуществляется наиболее гибким способом, поэтому, за исключением определения конфигурации FluentNhibernate для конкретного проекта, для добавления его в другой проект MVC будет очень минимальное количество проводов.

1 Ответ

0 голосов
/ 12 декабря 2011

Все в порядке. Вам нужно будет открыть сеанс по запросу и начать его и закрыть по окончании запроса.

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