本节目录
介绍
UOW(全称UnitOfWork)是指工作单元.
在Abp中,工作单元对于仓储和应用服务方法默认开启。并在一次请求中,共享同一个工作单元.
同时在Abp中,不仅支持同一个数据库连接,还支持事务处理.
分析Abp源码
1.UnitOfWorkRegistrar
2.ComponentRegistered
3.IsConventionalUowClass
4.Intercept
5.PerformSyncUow
实现UOW
定义IUnitOfWork
1 2 3 4 5 6 7 8 9 10 11 12 |
public interface IUnitOfWork
|
实现uow,在uow中会提供db的创建,这样才能管理到每个db.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 |
public class EfUnitOfWork : UnitOfWorkBase
|
定义与实现仓储层,这里不再做DbProvider.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 |
public interface IRepository
|
定义与实现应用层
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 |
public interface IApplicationService
|
定义与实现uow拦截器
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
internal class UnitOfWorkInterceptor : IInterceptor
|
定义在IApplicationService与IRepository接口下拦截
1 2 3 4 5 6 7 8 |
static void Kernel_ComponentRegistered( string key, Castle.MicroKernel.IHandler handler)
|
执行
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
static void Main( string [] args)
|
会自动在application method的结尾调用Complete.
另外也可以在uow上定义option为启用事务.在本例中稍作扩展即可实现.