From afdece575ce4abf0d5a656fba7ae4d3dca31b02a Mon Sep 17 00:00:00 2001 From: sunkaixuan <610262374@qq.com> Date: Mon, 17 Feb 2025 17:54:59 +0800 Subject: [PATCH] Add OpenAsync CloseAsync --- .../Abstract/AdoProvider/AdoProvider.cs | 25 +++++++++++++++++++ Src/Asp.Net/SqlSugar/Interface/IAdo.cs | 2 ++ 2 files changed, 27 insertions(+) diff --git a/Src/Asp.Net/SqlSugar/Abstract/AdoProvider/AdoProvider.cs b/Src/Asp.Net/SqlSugar/Abstract/AdoProvider/AdoProvider.cs index e90eb2183..f372793d4 100644 --- a/Src/Asp.Net/SqlSugar/Abstract/AdoProvider/AdoProvider.cs +++ b/Src/Asp.Net/SqlSugar/Abstract/AdoProvider/AdoProvider.cs @@ -122,6 +122,10 @@ namespace SqlSugar { CheckConnection(); } + public virtual async Task OpenAsync() + { + await CheckConnectionAsync(); + } public SugarConnection OpenAlways() { SugarConnection result = new SugarConnection(); @@ -132,6 +136,27 @@ namespace SqlSugar this.Open(); return result; } + public async Task CloseAsync() + { + if (this.Transaction != null) + { + this.Transaction = null; + } + if (this.Connection != null && this.Connection.State == ConnectionState.Open) + { + await ((DbConnection)this.Connection).CloseAsync(); + } + if (this.IsMasterSlaveSeparation && this.SlaveConnections.HasValue()) + { + foreach (var slaveConnection in this.SlaveConnections) + { + if (slaveConnection != null && slaveConnection.State == ConnectionState.Open) + { + await ((DbConnection)slaveConnection).CloseAsync(); + } + } + } + } public virtual void Close() { if (this.Transaction != null) diff --git a/Src/Asp.Net/SqlSugar/Interface/IAdo.cs b/Src/Asp.Net/SqlSugar/Interface/IAdo.cs index 549cc986a..77bd5b5cc 100644 --- a/Src/Asp.Net/SqlSugar/Interface/IAdo.cs +++ b/Src/Asp.Net/SqlSugar/Interface/IAdo.cs @@ -174,7 +174,9 @@ namespace SqlSugar void Dispose(); void Close(); + Task CloseAsync(); void Open(); + Task OpenAsync(); SugarConnection OpenAlways(); bool IsValidConnection(); bool IsValidConnectionNoClose();