2015-05-26 8 views
1

Я использую шаблон структуры работы для взаимодействия с контекстом DB в приложении ASP.NET MVC. Я хочу использовать UoW для использования транзакций для службы Windows. Какую конфигурацию Ninject следует использовать, когда я связываю DBC-текст?Ninject Конфигурация для работы Конфигурация настройки работы для службы Windows

+0

настроить его, чтобы ввести свой DbContext в классы UOW в переходном объеме – Luke

ответ

0

Первый, DbContext - это единица работы. Вам не нужно будет внедрять один поверх него. На всякий случай вы не знали ;-)


Вам нужно будет определить свои границы транзакций. Не существует заранее определенного механизма обзора, такого как «InRequestScope» (кроме случаев, когда вы обрабатываете запросы WCF, тогда тоже будет).

Если вы создаете объект-поддерево для каждого запроса, вы можете использовать «InCallScope()», или вы можете определить свой собственный механизм определения транзакций и использовать «InScope (ctx => объект области видимости)». Убедитесь, что объект области реализует INotifyWhenDisposed, иначе DbContext не удаляется немедленно.

Если вы не создаете объект-поддерево для каждого запроса, вам нужно будет использовать фабрику для создания DbContext за транзакцию и передать ее из метода в метод. В качестве завода вы можете просто ввести Func<DbContext> (для этого требуется Ninject.Extensions.Factory)

0

Ninject.Extensions.UnitOfWork решает эту проблему.

Установка:

_kernel.Bind<IService>().To<Service>().InUnitOfWorkScope(); 

Использование:

using(UnitOfWorkScope.Create()){ 
    // resolves, async/await, manual TPL ops, etc  
}