From 48e3935ac46af636106f551f803f00e2bba0d8b2 Mon Sep 17 00:00:00 2001 From: sunkaixuna <610262374@qq.com> Date: Thu, 12 Aug 2021 10:46:18 +0800 Subject: [PATCH] Update db.UseTranAsync --- Src/Asp.Net/SqlSugar/Interface/ITenant.cs | 4 +- Src/Asp.Net/SqlSugar/SqlSugarClient.cs | 49 +++++++++++++++++++++-- Src/Asp.Net/SqlSugar/SqlSugarScope.cs | 4 +- 3 files changed, 49 insertions(+), 8 deletions(-) diff --git a/Src/Asp.Net/SqlSugar/Interface/ITenant.cs b/Src/Asp.Net/SqlSugar/Interface/ITenant.cs index 23fc9ae6b..d94a8a2f1 100644 --- a/Src/Asp.Net/SqlSugar/Interface/ITenant.cs +++ b/Src/Asp.Net/SqlSugar/Interface/ITenant.cs @@ -14,10 +14,10 @@ namespace SqlSugar void ChangeDatabase(dynamic configId); void ChangeDatabase(Func changeExpression); DbResult UseTran(Action action, Action errorCallBack = null); - Task> UseTranAsync(Action action, Action errorCallBack = null); + Task> UseTranAsync(Func action, Action errorCallBack = null); DbResult UseTran(Func action, Action errorCallBack = null); - Task> UseTranAsync(Func action, Action errorCallBack = null); + Task> UseTranAsync(Func> action, Action errorCallBack = null); void AddConnection(ConnectionConfig connection); SqlSugarProvider GetConnection(dynamic configId); bool IsAnyConnection(dynamic configId); diff --git a/Src/Asp.Net/SqlSugar/SqlSugarClient.cs b/Src/Asp.Net/SqlSugar/SqlSugarClient.cs index fcc67e233..227c556ad 100644 --- a/Src/Asp.Net/SqlSugar/SqlSugarClient.cs +++ b/Src/Asp.Net/SqlSugar/SqlSugarClient.cs @@ -687,9 +687,29 @@ namespace SqlSugar return result; } - public Task> UseTranAsync(Action action, Action errorCallBack = null) + public async Task> UseTranAsync(Func action, Action errorCallBack = null) { - return Task.FromResult(UseTran(action, errorCallBack)); + var result = new DbResult(); + try + { + this.BeginTran(); + if (action != null) + await action(); + this.CommitTran(); + result.Data = result.IsSuccess = true; + } + catch (Exception ex) + { + result.ErrorException = ex; + result.ErrorMessage = ex.Message; + result.IsSuccess = false; + this.RollbackTran(); + if (errorCallBack != null) + { + errorCallBack(ex); + } + } + return result; } public DbResult UseTran(Func action, Action errorCallBack = null) @@ -717,9 +737,30 @@ namespace SqlSugar return result; } - public Task> UseTranAsync(Func action, Action errorCallBack = null) + public async Task> UseTranAsync(Func> action, Action errorCallBack = null) { - return Task.FromResult(UseTran(action, errorCallBack)); + var result = new DbResult(); + try + { + this.BeginTran(); + T data=default(T); + if (action != null) + data = await action(); + this.CommitTran(); + result.Data = data; + } + catch (Exception ex) + { + result.ErrorException = ex; + result.ErrorMessage = ex.Message; + result.IsSuccess = false; + this.RollbackTran(); + if (errorCallBack != null) + { + errorCallBack(ex); + } + } + return result; } public void RollbackTran() diff --git a/Src/Asp.Net/SqlSugar/SqlSugarScope.cs b/Src/Asp.Net/SqlSugar/SqlSugarScope.cs index f77e8b29d..2bb7434ab 100644 --- a/Src/Asp.Net/SqlSugar/SqlSugarScope.cs +++ b/Src/Asp.Net/SqlSugar/SqlSugarScope.cs @@ -662,12 +662,12 @@ namespace SqlSugar return ScopedContext.UseTran(action,errorCallBack); } - public Task> UseTranAsync(Action action, Action errorCallBack = null) + public Task> UseTranAsync(Func action, Action errorCallBack = null) { return ScopedContext.UseTranAsync(action, errorCallBack); } - public Task> UseTranAsync(Func action, Action errorCallBack = null) + public Task> UseTranAsync(Func> action, Action errorCallBack = null) { return ScopedContext.UseTranAsync(action, errorCallBack); }