打赏

netCore webapi Uow实现方式

参照

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

思路:

1、创建ActionFilter拦截请求,在拦截器中注入IUOWIUOW里面注入IDbContext,借助EFcommit自带的事务来实现事务处理

2Action中调取一组业务服务层IServiceIService里面注入IRepository(IRepository里面注入了IDbContext)

3、事务实现的关键在于IUOWIrepository中的IdbContext为同一个对象。这个是通过Autofac中的InstancePerLifetimeScope来实现

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

4InstancePerLifetimeScope类似于变量的作用域一样。在首个注入的对象的作用域内,再遇到注入情形时,不会注入,直接应用之前已经注入的对象。

这个作用域适用于嵌套的生命周期。一个使用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 sdk

posted @ 2018-02-07 15:58  KiteRunner1988  阅读(671)  评论(2编辑  收藏  举报