From 054ce370197b0707c1709346a2ff27e20e81de71 Mon Sep 17 00:00:00 2001 From: sunkaixuan <610262374@qq.com> Date: Sun, 19 May 2019 09:50:18 +0800 Subject: [PATCH] - --- .../Abstract/AdoProvider/AdoProvider.cs | 81 ++++++++++++++++++- .../SugarProvider/SqlSugarProvider.cs | 5 +- Src/Asp.Net/SqlSugar/Interface/IAdo.cs | 15 +++- 3 files changed, 93 insertions(+), 8 deletions(-) diff --git a/Src/Asp.Net/SqlSugar/Abstract/AdoProvider/AdoProvider.cs b/Src/Asp.Net/SqlSugar/Abstract/AdoProvider/AdoProvider.cs index b8d6faf40..2ddd18c01 100644 --- a/Src/Asp.Net/SqlSugar/Abstract/AdoProvider/AdoProvider.cs +++ b/Src/Asp.Net/SqlSugar/Abstract/AdoProvider/AdoProvider.cs @@ -725,6 +725,55 @@ namespace SqlSugar return SqlQuery(sql); } } + public virtual Task> SqlQueryAsync(string sql, object parameters = null) + { + var sugarParameters = this.GetParameters(parameters); + return SqlQueryAsync(sql, sugarParameters); + } + public virtual async Task> SqlQueryAsync(string sql, params SugarParameter[] parameters) + { + this.Context.InitMappingInfo(); + var builder = InstanceFactory.GetSqlbuilder(this.Context.CurrentConnectionConfig); + builder.SqlQueryBuilder.sql.Append(sql); + if (parameters != null && parameters.Any()) + builder.SqlQueryBuilder.Parameters.AddRange(parameters); + var dataReader = await this.GetDataReaderAsync(builder.SqlQueryBuilder.ToSqlString(), builder.SqlQueryBuilder.Parameters.ToArray()); + List result = null; + if (typeof(T) == UtilConstants.ObjType) + { + var list = await this.Context.Utilities.DataReaderToExpandoObjectListAsync(dataReader); + result = list.Select(it => ((T)(object)it)).ToList(); + } + else + { + result =await this.DbBind.DataReaderToListAsync(typeof(T), dataReader); + } + builder.SqlQueryBuilder.Clear(); + if (this.Context.Ado.DataReaderParameters != null) + { + foreach (IDataParameter item in this.Context.Ado.DataReaderParameters) + { + var parameter = parameters.FirstOrDefault(it => item.ParameterName.Substring(1) == it.ParameterName.Substring(1)); + if (parameter != null) + { + parameter.Value = item.Value; + } + } + this.Context.Ado.DataReaderParameters = null; + } + return result; + } + public virtual Task> SqlQueryAsync(string sql, List parameters) + { + if (parameters != null) + { + return SqlQueryAsync(sql, parameters.ToArray()); + } + else + { + return SqlQueryAsync(sql); + } + } public Tuple, List> SqlQuery(string sql, object parameters = null) { var parsmeterArray = this.GetParameters(parameters); @@ -1041,11 +1090,26 @@ namespace SqlSugar return GetScalar(sql, parameters.ToArray()); } } + public virtual Task GetScalarAsync(string sql, object parameters) + { + return GetScalarAsync(sql, this.GetParameters(parameters)); + } + public virtual Task GetScalarAsync(string sql, List parameters) + { + if (parameters == null) + { + return GetScalarAsync(sql); + } + else + { + return GetScalarAsync(sql, parameters.ToArray()); + } + } public virtual int ExecuteCommand(string sql, object parameters) { return ExecuteCommand(sql, GetParameters(parameters)); } - public virtual int ExecuteCommand(string sql, List parameters) + public virtual int ExecuteCommandAsync(string sql, List parameters) { if (parameters == null) { @@ -1056,6 +1120,21 @@ namespace SqlSugar return ExecuteCommand(sql, parameters.ToArray()); } } + public virtual Task ExecuteCommandAsync(string sql, object parameters) + { + return ExecuteCommandAsync(sql, GetParameters(parameters)); + } + public virtual Task ExecuteCommand(string sql, List parameters) + { + if (parameters == null) + { + return ExecuteCommandAsync(sql); + } + else + { + return ExecuteCommandAsync(sql, parameters.ToArray()); + } + } #endregion #region Helper diff --git a/Src/Asp.Net/SqlSugar/Abstract/SugarProvider/SqlSugarProvider.cs b/Src/Asp.Net/SqlSugar/Abstract/SugarProvider/SqlSugarProvider.cs index 47a652d99..0bcf84a0d 100644 --- a/Src/Asp.Net/SqlSugar/Abstract/SugarProvider/SqlSugarProvider.cs +++ b/Src/Asp.Net/SqlSugar/Abstract/SugarProvider/SqlSugarProvider.cs @@ -794,10 +794,9 @@ namespace SqlSugar return SaveQueuesProvider(isTran, (sql, parameters) => { return this.Ado.ExecuteCommand(sql, parameters); }); } - public Task SaveQueuesAsync(bool isTran = true) + public async Task SaveQueuesAsync(bool isTran = true) { - var result =Task.FromResult(SaveQueues(isTran)); - return result; + return await SaveQueuesProvider(isTran, async(sql, parameters) => { return await this.Ado.ExecuteCommandAsync(sql, parameters); }); } public List SaveQueues(bool isTran = true) { diff --git a/Src/Asp.Net/SqlSugar/Interface/IAdo.cs b/Src/Asp.Net/SqlSugar/Interface/IAdo.cs index 104c6a26a..742dcd06c 100644 --- a/Src/Asp.Net/SqlSugar/Interface/IAdo.cs +++ b/Src/Asp.Net/SqlSugar/Interface/IAdo.cs @@ -33,10 +33,8 @@ namespace SqlSugar void SetCommandToAdapter(IDataAdapter adapter, DbCommand command); IDataAdapter GetAdapter(); DbCommand GetCommand(string sql, SugarParameter[] parameters); - Task ExecuteCommandAsync(string sql, params SugarParameter[] parameters); Task GetDataReaderAsync(string sql, params SugarParameter[] parameters); Task GetDataReaderNoCloseAsync(string sql, params SugarParameter[] parameters); - Task GetScalarAsync(string sql, params SugarParameter[] parameters); DataTable GetDataTable(string sql, object parameters); DataTable GetDataTable(string sql, params SugarParameter[] parameters); DataTable GetDataTable(string sql, List parameters); @@ -49,9 +47,15 @@ namespace SqlSugar object GetScalar(string sql, object parameters); object GetScalar(string sql, params SugarParameter[] parameters); object GetScalar(string sql, List parameters); + Task GetScalarAsync(string sql, object parameters); + Task GetScalarAsync(string sql, params SugarParameter[] parameters); + Task GetScalarAsync(string sql, List parameters); int ExecuteCommand(string sql, object parameters); int ExecuteCommand(string sql, params SugarParameter[] parameters); int ExecuteCommand(string sql, List parameters); + Task ExecuteCommandAsync(string sql, params SugarParameter[] parameters); + Task ExecuteCommandAsync(string sql, object parameters); + Task ExecuteCommandAsync(string sql, List parameters); string GetString(string sql, object parameters); string GetString(string sql, params SugarParameter[] parameters); string GetString(string sql, List parameters); @@ -69,16 +73,19 @@ namespace SqlSugar DateTime GetDateTime(string sql, object parameters); DateTime GetDateTime(string sql, params SugarParameter[] parameters); DateTime GetDateTime(string sql, List parameters); - List SqlQuery(string sql, object parameters = null); + Tuple, List> SqlQuery(string sql, object parameters = null); Tuple, List, List> SqlQuery(string sql, object parameters = null); Tuple, List, List,List> SqlQuery(string sql, object parameters = null); Tuple, List, List, List, List> SqlQuery(string sql, object parameters = null); Tuple, List, List, List, List, List> SqlQuery(string sql, object parameters = null); Tuple, List, List, List, List, List, List> SqlQuery(string sql, object parameters = null); - + List SqlQuery(string sql, object parameters = null); List SqlQuery(string sql, params SugarParameter[] parameters); List SqlQuery(string sql, List parameters); + Task> SqlQueryAsync(string sql, object parameters = null); + Task> SqlQueryAsync(string sql, List parameters); + Task> SqlQueryAsync(string sql, params SugarParameter[] parameters); T SqlQuerySingle(string sql, object whereObj = null); T SqlQuerySingle(string sql, params SugarParameter[] parameters); T SqlQuerySingle(string sql, List parameters);