netCore webapi Uow實現方式

參照html

http://www.cnblogs.com/GreedyL/p/7474368.htmlweb

思路:ui

1、建立ActionFilter攔截請求,在攔截器中注入IUOWIUOW裏面注入IDbContext,藉助EFcommit自帶的事務來實現事務處理spa

2Action中調取一組業務服務層IServiceIService裏面注入IRepository(IRepository裏面注入了IDbContext)

3、事務實現的關鍵在於IUOWIrepository中的IdbContext爲同一個對象。這個是經過Autofac中的InstancePerLifetimeScope來實現component

builder.RegisterType<HouseManageObjectContext>().As<IDbContext>().InstancePerLifetimeScope();orm

4InstancePerLifetimeScope相似於變量的做用域同樣。在首個注入的對象的做用域內,再遇到注入情形時,不會注入,直接應用以前已經注入的對象。htm

這個做用域適用於嵌套的生命週期。一個使用Per Lifetime 做用域的component在一個 nested lifetime scope內最多有一個實例。
當對象特定於一個工做單元時,這個很是有用。好比,一個HTTP請求,每個工做單元都會建立一個nested lifetime,若是在每一次HTTP請求中建立一個nested lifetime,那麼其餘使用 per-lifetime component在每次HTTP請求中只會擁有一個實例。
這種配置模型在其餘容器中等價於per-HTTP-request, per-thread等。
builder.RegisterType<X>().InstancePerLifetimeScope();
ASP.NET 
WCF集成中,每一次web請求或者方法調用,InstancePerLifetimeScope會被默認附加到component
對象

代碼詳情參見housemanage項目和chinabeacon.data sdkblog

相關文章
相關標籤/搜索