mirror of
https://gitee.com/ccnetcore/Yi
synced 2026-06-07 18:38:20 +08:00
48 lines
1.2 KiB
Markdown
48 lines
1.2 KiB
Markdown
|
|
## 简介
|
|||
|
|
> 工作单元模式是“维护一个被业务事务影响的对象列表,协调变化的写入和并发问题的解决”
|
|||
|
|
|
|||
|
|
它的作用
|
|||
|
|
1. 事务相关
|
|||
|
|
2. 共用连接
|
|||
|
|
...
|
|||
|
|
|
|||
|
|
## 如何使用
|
|||
|
|
依赖注入`IUnitOfWorkManager`,使用`CreateContext`创建一个`IUnitOfWork`工作单元
|
|||
|
|
在工作单元内部,可提交,回滚,获取仓储
|
|||
|
|
``` cs
|
|||
|
|
bool IsTran { get; set; }
|
|||
|
|
bool IsCommit { get; set; }
|
|||
|
|
bool IsClose { get; set; }
|
|||
|
|
|
|||
|
|
IRepository<T> GetRepository<T>();
|
|||
|
|
bool Commit();
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
> 注意,在除Get请求上,其他请求默认都开启了工作单元(post、put、delelte)
|
|||
|
|
|
|||
|
|
## 完整例子
|
|||
|
|
``` cs
|
|||
|
|
private IUnitOfWorkManager _unitOfWorkManager { get; set; }
|
|||
|
|
public void Test()
|
|||
|
|
{
|
|||
|
|
using (var uow = _unitOfWorkManager.CreateContext())
|
|||
|
|
{
|
|||
|
|
//仓储执行各种操作
|
|||
|
|
|
|||
|
|
//统一提交
|
|||
|
|
uow.Commit();
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
}
|
|||
|
|
```
|
|||
|
|
## 特性方式
|
|||
|
|
还可以通过`[UnitOfWork]`特性,打在方法上,该方法便会当作一个事务进行提交
|
|||
|
|
``` cs
|
|||
|
|
[UnitOfWork]
|
|||
|
|
public void Test()
|
|||
|
|
{
|
|||
|
|
//仓储执行各种操作
|
|||
|
|
}
|
|||
|
|
```
|
|||
|
|
|