[师]Abp框架原理解析(5)UnitOfWork

本节目录

<李>

介绍

<李>

分析Abp源码

<李>

实现UOW

,

介绍

UOW(全称UnitOfWork)是指工作单元。

在Abp中,工作单元对于仓储和应用服务方法默认开启。并在一次请求中,共享同一个工作单元。

同时在Abp中,不仅支持同一个数据库连接,还支持事务处理。

,

分析Abp源码

1。UnitOfWorkRegistrar

(架构师)Abp框架原理解析(5)UnitOfWork

,

2。ComponentRegistered

(架构师)Abp框架原理解析(5)UnitOfWork

,

,

3。IsConventionalUowClass

(架构师)Abp框架原理解析(5)UnitOfWork

,

,

4。拦截

(架构师)Abp框架原理解析(5)UnitOfWork

,

,

5。PerformSyncUow

, (架构师)Abp框架原理解析(5)UnitOfWork

,

,

实现UOW

定义IUnitOfWork 1

3

4 5 6

7 8 9

10 11 12

<代码>公共代码,<代码>界面,<代码> IUnitOfWork

<代码>{

<代码>,,,, <代码>//1。开启事务

<代码>,,,, <代码>//2。设置过滤器(本例中不做演示)

<代码>,,,, <代码>空白,<代码>开始(UnitOfWorkOptions选项);

<代码>,,,, <代码>空白,<代码>完成();

<代码>}

<代码>公共代码,<代码>类,<代码> UnitOfWorkOptions

<代码>{

<代码>,,,, <代码>公共代码,<代码> bool <代码> ?IsTransactional{, <代码> <代码>;, <代码> <代码>;}

<代码>}

,

实现uow,在uow中会提供db的创建,这样才能管理到每个db。

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

42 41

43 44

45 46 47

<代码>公共代码,<代码>类,<代码> EfUnitOfWork: UnitOfWorkBase

<代码>{

<代码>,,,, <代码>公共代码,<代码>静态代码,<代码> DbContext DbContext{, <代码> <代码>;, <代码> <代码>;}

<代码>,,,, <代码>公共代码,<代码>静态代码,<代码> DbContext GetDbContext()

<代码>,,,, <代码>{

<代码>,,,,,,,, <代码>如果,<代码> (DbContext==, <代码>空 <代码>)

<代码>,,,,,,,, <代码>{

<代码>,,,,,,,,,,,, <代码> DbContext=, <代码>新,<代码> DemoDb();

<代码>,,,,,,,, <代码>}

<代码>,,,,,,,, <代码>返回,<代码> DbContext;

<代码>,,,, <代码>}

<代码>,,,, <代码>公共代码,<代码>覆盖,<代码>空白,<代码>开始(UnitOfWorkOptions选项)

<代码>,,,, <代码>{

<代码>,,,,,,,, <代码>如果,<代码>(选项。IsTransactional==, <代码>对 <代码>)

<代码>,,,,,,,, <代码>{

<代码>,,,,,,,,,,,, <代码> CurrentTransaction=, <代码>新,<代码> TransactionScope();

<代码>,,,,,,,, <代码>}

<代码>,,,, <代码>}

<代码>,,,, <代码>公共代码,<代码> TransactionScope CurrentTransaction{, <代码> <代码>;, <代码> <代码>;null

[师]Abp框架原理解析(5)UnitOfWork