DotNetNext / SqlSugar

.Net aot ORM Fastest ORM Simple Easy VB.NET Sqlite orm Oracle ORM Mysql Orm 虚谷数据库 postgresql ORm SqlServer oRm 达梦 ORM 人大金仓 ORM 神通ORM C# ORM , C# ORM .NET ORM NET5 ORM .NET6 ORM ClickHouse orm QuestDb ,TDengine ORM,OceanBase orm,GaussDB orm ,Tidb orm Object/Relational Mapping

Home Page:https://www.donet5.com/Home/Doc

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

官方能不能支持AOP事务

my6521 opened this issue · comments

commented
官方能不能支持AOP事务

AOP事务是什么意思 方法特性加事务吗

commented

是的,方法上加拦截事务

commented

使用AspectCore的拦截可以这样写吗?

public class TransactionAttribute : AbstractInterceptorAttribute
{
    public IsolationLevel Level { get; set; } = IsolationLevel.Unspecified;
    public async override Task Invoke(AspectContext context, AspectDelegate next)
    {
        var sqlSugarClient = context.ServiceProvider.GetService<ISqlSugarClient>();

        var inTransaction = sqlSugarClient.Ado.Transaction != null;
        if (inTransaction)
        {
            await next.Invoke(context); return;
        }

        try
        {
            sqlSugarClient.Ado.BeginTran(Level);

            await next(context);

            sqlSugarClient.Ado.CommitTran();
        }

        catch
        {
            sqlSugarClient.Ado.RollbackTran();
        }

    }
}

可以的 你这个是scope周期的注入吧

commented

是scope,没问题吧?

是的 单库用db.ado是OK的

commented

这样是同一个ISqlSugarClient的事务就没问题

是的

commented

嵌套也解决了

可以的

commented

ok,tks

先关闭,如果还有问题可以发新的issues