Я начинаю новый проект и хочу делать вещи лучше, чем раньше.Я использовал Виндзор для DI, но это не получилось.Я присматривался к пакету NuGet Ninject MVC 3, чтобы позаботиться о DI.
Я много часов гуглял и нашел много полезных советов по Ninject (особенно это касается фильтров DI), ноничего, что действительно отвечает следующему сценарию записи ...
Сценарий:
- У меня есть база данных SQL Server для сохранения.Я хочу, чтобы весь доступ к базе данных был в транзакции.
- Я буду использовать репозитории для доступа к объектам домена, которые хранятся в базе данных.
- Контроллеру может потребоваться использовать несколько репозиториевчтобы это работало, и, следовательно, доступ к данным должен быть одним и тем же экземпляром для каждого репозитория, чтобы избежать проблем с блокировкой.
- Доступ к данным должен осуществляться по запросу к веб-приложению.
Моя путаница / размышления:
- Если Ninject отправляет в соответствующую фабрику БД или контекст все мои репозитории, то где (и как) я бы поместил код для фиксации при успешном завершении или откате в случае возникновения исключения?В идеале вы не хотели бы делать это для каждого действия контроллера, поэтому я предполагаю, что в глобальном событии asax EndRequest, но как узнать, следует ли выполнять фиксацию или откат.