Использование транзакций базы данных в ASP.NET MVC3 с Ninject DI - PullRequest
0 голосов
/ 20 июля 2011

Я начинаю новый проект и хочу делать вещи лучше, чем раньше.Я использовал Виндзор для DI, но это не получилось.Я присматривался к пакету NuGet Ninject MVC 3, чтобы позаботиться о DI.

Я много часов гуглял и нашел много полезных советов по Ninject (особенно это касается фильтров DI), ноничего, что действительно отвечает следующему сценарию записи ...

Сценарий:

  • У меня есть база данных SQL Server для сохранения.Я хочу, чтобы весь доступ к базе данных был в транзакции.
  • Я буду использовать репозитории для доступа к объектам домена, которые хранятся в базе данных.
  • Контроллеру может потребоваться использовать несколько репозиториевчтобы это работало, и, следовательно, доступ к данным должен быть одним и тем же экземпляром для каждого репозитория, чтобы избежать проблем с блокировкой.
  • Доступ к данным должен осуществляться по запросу к веб-приложению.

Моя путаница / размышления:

  • Если Ninject отправляет в соответствующую фабрику БД или контекст все мои репозитории, то где (и как) я бы поместил код для фиксации при успешном завершении или откате в случае возникновения исключения?В идеале вы не хотели бы делать это для каждого действия контроллера, поэтому я предполагаю, что в глобальном событии asax EndRequest, но как узнать, следует ли выполнять фиксацию или откат.

1 Ответ

0 голосов
/ 20 июля 2011

Посмотрите Sharp Architecture * Реализация этого - хотя они используют Windsor, тот же подход можно использовать и с Ninject.

В основном вы добавляете Transaction атрибуты, где это требуется в Controllerметоды - вся сантехника обрабатывается каркасом Sharp Arch.

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