簡體   English   中英

Ninject配置為Windows服務的工作單元配置

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM