[英]Ninject Configuration to work Unit of Work configuration for Windows Service
我正在使用工作單元設計模式與ASP.NET MVC應用程序中的數據庫上下文進行交互。 我想使用UoW以便將事務用於Windows服務。 綁定DBContext時應使用什么Ninject配置?
首先, DbContext
是工作單元。 您無需在其之上實施一個。 以防萬一你不知道;-)
您必須定義自己的交易邊界。 沒有像'InRequestScope'這樣的預定義范圍界定機制(除非您正在處理WCF請求,否則也是如此)。
如果要為每個請求創建一個對象子樹,則可以使用“ InCallScope()”,也可以定義自己的事務作用域機制,並使用“ InScope(ctx =>作用域對象)”。 確保范圍對象實現了INotifyWhenDisposed
,否則DbContext
不會立即被丟棄。
如果不按請求創建對象子樹,則需要使用工廠為每個事務創建DbContext
並將其從方法傳遞到方法。 作為工廠,您可以只注入Func<DbContext>
(這需要Ninject.Extensions.Factory )
Ninject.Extensions.UnitOfWork解決了此問題。
設定:
_kernel.Bind<IService>().To<Service>().InUnitOfWorkScope();
用法:
using(UnitOfWorkScope.Create()){
// resolves, async/await, manual TPL ops, etc
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.