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

相关文章
相关标签/搜索