事务,延迟提交

1、事务特性

注意

1、函数必须是 virtual 事务特性才能起作用。

2、[Transactional] 特性默认读取 AdminDbContext 如何其他 DbContext 请指定 DbContextType。

[Transactional]
public virtual async Task SaveFormAsync(SysUserFormDto form)
{
    // 你的业务逻辑 CRUD ...
}

[Transactional(typeof(AdminDbContext),...)]
public virtual async Task SaveFormAsync(SysUserFormDto form)
{
    // 你的业务逻辑 CRUD ...
}

2、提交事务

public async Task SaveFormAsync(SysUserFormDto form)
{
    // 创建事务对象
    using var tr = await _defaultRepository.UnitOfWork.BeginTransactionAsync();

    try
    {
        // 你的业务逻辑 CRUD ...
    }
    catch (Exception)
    {
        // 回滚事务
        await tr.RollbackAsync();
        throw;
    }
    finally
    {
        // 提交事务
        await tr.CommitAsync();
    }
}

3、延迟提交

// 开启延迟提交
_defaultRepository.UnitOfWork.CommitDelayStart();

// 你的业务逻辑 CRUD ...

// 结束延迟提交
_defaultRepository.UnitOfWork.CommitDelayEnd();    
Last Updated:
Contributors: hzy