From 6f53e0f76ba326d95f8a454f52f7669029613e5b Mon Sep 17 00:00:00 2001 From: sunkaixuan <610262374@qq.com> Date: Sun, 19 May 2019 19:58:53 +0800 Subject: [PATCH] Code optimization --- .../Demo/Demo0_SqlSugarClient.cs | 2 + Src/Asp.Net/SqlServerTest/UnitTest/UAdo.cs | 2 + .../Abstract/AdoProvider/AdoProvider.cs | 275 ++++++------------ 3 files changed, 86 insertions(+), 193 deletions(-) diff --git a/Src/Asp.Net/SqlServerTest/Demo/Demo0_SqlSugarClient.cs b/Src/Asp.Net/SqlServerTest/Demo/Demo0_SqlSugarClient.cs index 67baaa7e3..c88febc9e 100644 --- a/Src/Asp.Net/SqlServerTest/Demo/Demo0_SqlSugarClient.cs +++ b/Src/Asp.Net/SqlServerTest/Demo/Demo0_SqlSugarClient.cs @@ -41,6 +41,8 @@ namespace OrmTest //Use db var dt = db.Ado.GetDataTable("select 1"); + + db.Insertable(new OrderItem() { OrderId = 1, Price = 0 }).ExecuteCommand(); Console.WriteLine("#### SqlSugarClient End ####"); } diff --git a/Src/Asp.Net/SqlServerTest/UnitTest/UAdo.cs b/Src/Asp.Net/SqlServerTest/UnitTest/UAdo.cs index cfd98f7e8..8721194dc 100644 --- a/Src/Asp.Net/SqlServerTest/UnitTest/UAdo.cs +++ b/Src/Asp.Net/SqlServerTest/UnitTest/UAdo.cs @@ -47,6 +47,8 @@ namespace OrmTest var task8 = Db.Ado.SqlQueryAsync("select 8 as id"); task8.Wait(); UValidate.Check(8, task8.Result[0].id, "ado"); + + var task9=Db.Ado.SqlQuery("select * from [order];select * from OrderDetail"); } } } diff --git a/Src/Asp.Net/SqlSugar/Abstract/AdoProvider/AdoProvider.cs b/Src/Asp.Net/SqlSugar/Abstract/AdoProvider/AdoProvider.cs index 5af3c1a01..b18f4f8b1 100644 --- a/Src/Asp.Net/SqlSugar/Abstract/AdoProvider/AdoProvider.cs +++ b/Src/Asp.Net/SqlSugar/Abstract/AdoProvider/AdoProvider.cs @@ -543,7 +543,7 @@ namespace SqlSugar public virtual Task GetDataSetAllAsync(string sql, params SugarParameter[] parameters) { //False asynchrony . No Support DataSet - return Task.FromResult(GetDataSetAll(sql,parameters)); + return Task.FromResult(GetDataSetAll(sql, parameters)); } #endregion @@ -592,11 +592,11 @@ namespace SqlSugar - public virtual long GetLong(string sql, object parameters=null) + public virtual long GetLong(string sql, object parameters = null) { return Convert.ToInt64(GetScalar(sql, GetParameters(parameters))); } - public virtual async Task GetLongAsync(string sql, object parameters=null) + public virtual async Task GetLongAsync(string sql, object parameters = null) { return Convert.ToInt64(await GetScalarAsync(sql, GetParameters(parameters))); } @@ -712,7 +712,7 @@ namespace SqlSugar } public virtual async Task GetDecimalAsync(string sql, params SugarParameter[] parameters) { - var result =await GetScalarAsync(sql, parameters); + var result = await GetScalarAsync(sql, parameters); return result.ObjToDecimal(); } public virtual Task GetDecimalAsync(string sql, List parameters) @@ -794,7 +794,7 @@ namespace SqlSugar } else { - result=this.DbBind.DataReaderToList(typeof(T), dataReader); + result = this.DbBind.DataReaderToList(typeof(T), dataReader); } builder.SqlQueryBuilder.Clear(); if (this.Context.Ado.DataReaderParameters != null) @@ -844,7 +844,7 @@ namespace SqlSugar } else { - result =await this.DbBind.DataReaderToListAsync(typeof(T), dataReader); + result = await this.DbBind.DataReaderToListAsync(typeof(T), dataReader); } builder.SqlQueryBuilder.Clear(); if (this.Context.Ado.DataReaderParameters != null) @@ -875,168 +875,28 @@ namespace SqlSugar public Tuple, List> SqlQuery(string sql, object parameters = null) { - var parsmeterArray = this.GetParameters(parameters); - this.Context.InitMappingInfo(); - var builder = InstanceFactory.GetSqlbuilder(this.Context.CurrentConnectionConfig); - builder.SqlQueryBuilder.sql.Append(sql); - if (parsmeterArray != null && parsmeterArray.Any()) - builder.SqlQueryBuilder.Parameters.AddRange(parsmeterArray); - using (var dataReader = this.GetDataReaderNoClose(builder.SqlQueryBuilder.ToSqlString(), builder.SqlQueryBuilder.Parameters.ToArray())) - { - List result = this.DbBind.DataReaderToListNoUsing(typeof(T), dataReader); - NextResult(dataReader); - List result2 = this.DbBind.DataReaderToListNoUsing(typeof(T2), dataReader); - builder.SqlQueryBuilder.Clear(); - if (this.Context.Ado.DataReaderParameters != null) - { - foreach (IDataParameter item in this.Context.Ado.DataReaderParameters) - { - var parameter = parsmeterArray.FirstOrDefault(it => item.ParameterName.Substring(1) == it.ParameterName.Substring(1)); - if (parameter != null) - { - parameter.Value = item.Value; - } - } - this.Context.Ado.DataReaderParameters = null; - } - return Tuple.Create, List>(result, result2); - } + var result = SqlQuery(sql, parameters); + return new Tuple, List>(result.Item1, result.Item2); } public Tuple, List, List> SqlQuery(string sql, object parameters = null) { - var parsmeterArray = this.GetParameters(parameters); - this.Context.InitMappingInfo(); - var builder = InstanceFactory.GetSqlbuilder(this.Context.CurrentConnectionConfig); - builder.SqlQueryBuilder.sql.Append(sql); - if (parsmeterArray != null && parsmeterArray.Any()) - builder.SqlQueryBuilder.Parameters.AddRange(parsmeterArray); - using (var dataReader = this.GetDataReaderNoClose(builder.SqlQueryBuilder.ToSqlString(), builder.SqlQueryBuilder.Parameters.ToArray())) - { - List result = this.DbBind.DataReaderToListNoUsing(typeof(T), dataReader); - NextResult(dataReader); - List result2 = this.DbBind.DataReaderToListNoUsing(typeof(T2), dataReader); - NextResult(dataReader); - List result3 = this.DbBind.DataReaderToListNoUsing(typeof(T3), dataReader); - builder.SqlQueryBuilder.Clear(); - if (this.Context.Ado.DataReaderParameters != null) - { - foreach (IDataParameter item in this.Context.Ado.DataReaderParameters) - { - var parameter = parsmeterArray.FirstOrDefault(it => item.ParameterName.Substring(1) == it.ParameterName.Substring(1)); - if (parameter != null) - { - parameter.Value = item.Value; - } - } - this.Context.Ado.DataReaderParameters = null; - } - return Tuple.Create, List, List>(result, result2, result3); - } + var result = SqlQuery(sql, parameters); + return new Tuple, List, List>(result.Item1, result.Item2, result.Item3); } public Tuple, List, List, List> SqlQuery(string sql, object parameters = null) { - var parsmeterArray = this.GetParameters(parameters); - this.Context.InitMappingInfo(); - var builder = InstanceFactory.GetSqlbuilder(this.Context.CurrentConnectionConfig); - builder.SqlQueryBuilder.sql.Append(sql); - if (parsmeterArray != null && parsmeterArray.Any()) - builder.SqlQueryBuilder.Parameters.AddRange(parsmeterArray); - using (var dataReader = this.GetDataReaderNoClose(builder.SqlQueryBuilder.ToSqlString(), builder.SqlQueryBuilder.Parameters.ToArray())) - { - List result = this.DbBind.DataReaderToListNoUsing(typeof(T), dataReader); - NextResult(dataReader); - List result2 = this.DbBind.DataReaderToListNoUsing(typeof(T2), dataReader); - NextResult(dataReader); - List result3 = this.DbBind.DataReaderToListNoUsing(typeof(T3), dataReader); - NextResult(dataReader); - List result4 = this.DbBind.DataReaderToListNoUsing(typeof(T4), dataReader); - builder.SqlQueryBuilder.Clear(); - if (this.Context.Ado.DataReaderParameters != null) - { - foreach (IDataParameter item in this.Context.Ado.DataReaderParameters) - { - var parameter = parsmeterArray.FirstOrDefault(it => item.ParameterName.Substring(1) == it.ParameterName.Substring(1)); - if (parameter != null) - { - parameter.Value = item.Value; - } - } - this.Context.Ado.DataReaderParameters = null; - } - return Tuple.Create, List, List, List>(result, result2, result3, result4); - } + var result = SqlQuery(sql, parameters); + return new Tuple, List, List, List>(result.Item1, result.Item2, result.Item3, result.Item4); } public Tuple, List, List, List, List> SqlQuery(string sql, object parameters = null) { - var parsmeterArray = this.GetParameters(parameters); - this.Context.InitMappingInfo(); - var builder = InstanceFactory.GetSqlbuilder(this.Context.CurrentConnectionConfig); - builder.SqlQueryBuilder.sql.Append(sql); - if (parsmeterArray != null && parsmeterArray.Any()) - builder.SqlQueryBuilder.Parameters.AddRange(parsmeterArray); - using (var dataReader = this.GetDataReaderNoClose(builder.SqlQueryBuilder.ToSqlString(), builder.SqlQueryBuilder.Parameters.ToArray())) - { - List result = this.DbBind.DataReaderToListNoUsing(typeof(T), dataReader); - NextResult(dataReader); - List result2 = this.DbBind.DataReaderToListNoUsing(typeof(T2), dataReader); - NextResult(dataReader); - List result3 = this.DbBind.DataReaderToListNoUsing(typeof(T3), dataReader); - NextResult(dataReader); - List result4 = this.DbBind.DataReaderToListNoUsing(typeof(T4), dataReader); - NextResult(dataReader); - List result5 = this.DbBind.DataReaderToListNoUsing(typeof(T5), dataReader); - builder.SqlQueryBuilder.Clear(); - if (this.Context.Ado.DataReaderParameters != null) - { - foreach (IDataParameter item in this.Context.Ado.DataReaderParameters) - { - var parameter = parsmeterArray.FirstOrDefault(it => item.ParameterName.Substring(1) == it.ParameterName.Substring(1)); - if (parameter != null) - { - parameter.Value = item.Value; - } - } - this.Context.Ado.DataReaderParameters = null; - } - return Tuple.Create, List, List, List, List>(result, result2, result3, result4, result5); - } + var result = SqlQuery(sql, parameters); + return new Tuple, List, List, List, List>(result.Item1, result.Item2, result.Item3, result.Item4, result.Item5); } public Tuple, List, List, List, List, List> SqlQuery(string sql, object parameters = null) { - var parsmeterArray = this.GetParameters(parameters); - this.Context.InitMappingInfo(); - var builder = InstanceFactory.GetSqlbuilder(this.Context.CurrentConnectionConfig); - builder.SqlQueryBuilder.sql.Append(sql); - if (parsmeterArray != null && parsmeterArray.Any()) - builder.SqlQueryBuilder.Parameters.AddRange(parsmeterArray); - using (var dataReader = this.GetDataReaderNoClose(builder.SqlQueryBuilder.ToSqlString(), builder.SqlQueryBuilder.Parameters.ToArray())) - { - List result = this.DbBind.DataReaderToListNoUsing(typeof(T), dataReader); - NextResult(dataReader); - List result2 = this.DbBind.DataReaderToListNoUsing(typeof(T2), dataReader); - NextResult(dataReader); - List result3 = this.DbBind.DataReaderToListNoUsing(typeof(T3), dataReader); - NextResult(dataReader); - List result4 = this.DbBind.DataReaderToListNoUsing(typeof(T4), dataReader); - NextResult(dataReader); - List result5 = this.DbBind.DataReaderToListNoUsing(typeof(T5), dataReader); - NextResult(dataReader); - List result6 = this.DbBind.DataReaderToListNoUsing(typeof(T6), dataReader); - builder.SqlQueryBuilder.Clear(); - if (this.Context.Ado.DataReaderParameters != null) - { - foreach (IDataParameter item in this.Context.Ado.DataReaderParameters) - { - var parameter = parsmeterArray.FirstOrDefault(it => item.ParameterName.Substring(1) == it.ParameterName.Substring(1)); - if (parameter != null) - { - parameter.Value = item.Value; - } - } - this.Context.Ado.DataReaderParameters = null; - } - return Tuple.Create, List, List, List, List, List>(result, result2, result3, result4, result5, result6); - } + var result = SqlQuery(sql, parameters); + return new Tuple, List, List, List, List, List>(result.Item1, result.Item2, result.Item3, result.Item4, result.Item5, result.Item6); } public Tuple, List, List, List, List, List, List> SqlQuery(string sql, object parameters = null) { @@ -1048,19 +908,48 @@ namespace SqlSugar builder.SqlQueryBuilder.Parameters.AddRange(parsmeterArray); using (var dataReader = this.GetDataReaderNoClose(builder.SqlQueryBuilder.ToSqlString(), builder.SqlQueryBuilder.Parameters.ToArray())) { - List result = this.DbBind.DataReaderToListNoUsing(typeof(T), dataReader); - NextResult(dataReader); - List result2 = this.DbBind.DataReaderToListNoUsing(typeof(T2), dataReader); - NextResult(dataReader); - List result3 = this.DbBind.DataReaderToListNoUsing(typeof(T3), dataReader); - NextResult(dataReader); - List result4 = this.DbBind.DataReaderToListNoUsing(typeof(T4), dataReader); - NextResult(dataReader); - List result5 = this.DbBind.DataReaderToListNoUsing(typeof(T5), dataReader); - NextResult(dataReader); - List result6 = this.DbBind.DataReaderToListNoUsing(typeof(T6), dataReader); - NextResult(dataReader); - List result7 = this.DbBind.DataReaderToListNoUsing(typeof(T7), dataReader); + DbDataReader DbReader = (DbDataReader)dataReader; + List result = null; + if (DbReader.HasRows) + { + result = this.DbBind.DataReaderToListNoUsing(typeof(T), dataReader); + } + List result2 = null; + if (DbReader.HasRows) + { + NextResult(dataReader); + result2 = this.DbBind.DataReaderToListNoUsing(typeof(T2), dataReader); + } + List result3 = null; + if (DbReader.HasRows) + { + NextResult(dataReader); + result3 = this.DbBind.DataReaderToListNoUsing(typeof(T3), dataReader); + } + List result4 = null; + if (DbReader.HasRows) + { + NextResult(dataReader); + result4 = this.DbBind.DataReaderToListNoUsing(typeof(T4), dataReader); + } + List result5 = null; + if (DbReader.HasRows) + { + NextResult(dataReader); + result5 = this.DbBind.DataReaderToListNoUsing(typeof(T5), dataReader); + } + List result6 = null; + if (DbReader.HasRows) + { + NextResult(dataReader); + result6 = this.DbBind.DataReaderToListNoUsing(typeof(T6), dataReader); + } + List result7 = null; + if (DbReader.HasRows) + { + NextResult(dataReader); + result7 = this.DbBind.DataReaderToListNoUsing(typeof(T7), dataReader); + } builder.SqlQueryBuilder.Clear(); if (this.Context.Ado.DataReaderParameters != null) { @@ -1086,11 +975,11 @@ namespace SqlSugar builder.SqlQueryBuilder.sql.Append(sql); if (parsmeterArray != null && parsmeterArray.Any()) builder.SqlQueryBuilder.Parameters.AddRange(parsmeterArray); - using (var dataReader =await this.GetDataReaderNoCloseAsync(builder.SqlQueryBuilder.ToSqlString(), builder.SqlQueryBuilder.Parameters.ToArray())) + using (var dataReader = await this.GetDataReaderNoCloseAsync(builder.SqlQueryBuilder.ToSqlString(), builder.SqlQueryBuilder.Parameters.ToArray())) { - List result =await this.DbBind.DataReaderToListNoUsingAsync(typeof(T), dataReader); + List result = await this.DbBind.DataReaderToListNoUsingAsync(typeof(T), dataReader); NextResult(dataReader); - List result2 =await this.DbBind.DataReaderToListNoUsingAsync(typeof(T2), dataReader); + List result2 = await this.DbBind.DataReaderToListNoUsingAsync(typeof(T2), dataReader); builder.SqlQueryBuilder.Clear(); if (this.Context.Ado.DataReaderParameters != null) { @@ -1115,13 +1004,13 @@ namespace SqlSugar builder.SqlQueryBuilder.sql.Append(sql); if (parsmeterArray != null && parsmeterArray.Any()) builder.SqlQueryBuilder.Parameters.AddRange(parsmeterArray); - using (var dataReader =await this.GetDataReaderNoCloseAsync(builder.SqlQueryBuilder.ToSqlString(), builder.SqlQueryBuilder.Parameters.ToArray())) + using (var dataReader = await this.GetDataReaderNoCloseAsync(builder.SqlQueryBuilder.ToSqlString(), builder.SqlQueryBuilder.Parameters.ToArray())) { - List result =await this.DbBind.DataReaderToListNoUsingAsync(typeof(T), dataReader); + List result = await this.DbBind.DataReaderToListNoUsingAsync(typeof(T), dataReader); NextResult(dataReader); - List result2 =await this.DbBind.DataReaderToListNoUsingAsync(typeof(T2), dataReader); + List result2 = await this.DbBind.DataReaderToListNoUsingAsync(typeof(T2), dataReader); NextResult(dataReader); - List result3 =await this.DbBind.DataReaderToListNoUsingAsync(typeof(T3), dataReader); + List result3 = await this.DbBind.DataReaderToListNoUsingAsync(typeof(T3), dataReader); builder.SqlQueryBuilder.Clear(); if (this.Context.Ado.DataReaderParameters != null) { @@ -1146,15 +1035,15 @@ namespace SqlSugar builder.SqlQueryBuilder.sql.Append(sql); if (parsmeterArray != null && parsmeterArray.Any()) builder.SqlQueryBuilder.Parameters.AddRange(parsmeterArray); - using (var dataReader =await this.GetDataReaderNoCloseAsync(builder.SqlQueryBuilder.ToSqlString(), builder.SqlQueryBuilder.Parameters.ToArray())) + using (var dataReader = await this.GetDataReaderNoCloseAsync(builder.SqlQueryBuilder.ToSqlString(), builder.SqlQueryBuilder.Parameters.ToArray())) { - List result =await this.DbBind.DataReaderToListNoUsingAsync(typeof(T), dataReader); + List result = await this.DbBind.DataReaderToListNoUsingAsync(typeof(T), dataReader); NextResult(dataReader); - List result2 =await this.DbBind.DataReaderToListNoUsingAsync(typeof(T2), dataReader); + List result2 = await this.DbBind.DataReaderToListNoUsingAsync(typeof(T2), dataReader); NextResult(dataReader); - List result3 =await this.DbBind.DataReaderToListNoUsingAsync(typeof(T3), dataReader); + List result3 = await this.DbBind.DataReaderToListNoUsingAsync(typeof(T3), dataReader); NextResult(dataReader); - List result4 =await this.DbBind.DataReaderToListNoUsingAsync(typeof(T4), dataReader); + List result4 = await this.DbBind.DataReaderToListNoUsingAsync(typeof(T4), dataReader); builder.SqlQueryBuilder.Clear(); if (this.Context.Ado.DataReaderParameters != null) { @@ -1214,19 +1103,19 @@ namespace SqlSugar builder.SqlQueryBuilder.sql.Append(sql); if (parsmeterArray != null && parsmeterArray.Any()) builder.SqlQueryBuilder.Parameters.AddRange(parsmeterArray); - using (var dataReader =await this.GetDataReaderNoCloseAsync(builder.SqlQueryBuilder.ToSqlString(), builder.SqlQueryBuilder.Parameters.ToArray())) + using (var dataReader = await this.GetDataReaderNoCloseAsync(builder.SqlQueryBuilder.ToSqlString(), builder.SqlQueryBuilder.Parameters.ToArray())) { - List result =await this.DbBind.DataReaderToListNoUsingAsync(typeof(T), dataReader); + List result = await this.DbBind.DataReaderToListNoUsingAsync(typeof(T), dataReader); NextResult(dataReader); - List result2 =await this.DbBind.DataReaderToListNoUsingAsync(typeof(T2), dataReader); + List result2 = await this.DbBind.DataReaderToListNoUsingAsync(typeof(T2), dataReader); NextResult(dataReader); - List result3 =await this.DbBind.DataReaderToListNoUsingAsync(typeof(T3), dataReader); + List result3 = await this.DbBind.DataReaderToListNoUsingAsync(typeof(T3), dataReader); NextResult(dataReader); - List result4 =await this.DbBind.DataReaderToListNoUsingAsync(typeof(T4), dataReader); + List result4 = await this.DbBind.DataReaderToListNoUsingAsync(typeof(T4), dataReader); NextResult(dataReader); - List result5 =await this.DbBind.DataReaderToListNoUsingAsync(typeof(T5), dataReader); + List result5 = await this.DbBind.DataReaderToListNoUsingAsync(typeof(T5), dataReader); NextResult(dataReader); - List result6 =await this.DbBind.DataReaderToListNoUsingAsync(typeof(T6), dataReader); + List result6 = await this.DbBind.DataReaderToListNoUsingAsync(typeof(T6), dataReader); builder.SqlQueryBuilder.Clear(); if (this.Context.Ado.DataReaderParameters != null) { @@ -1251,7 +1140,7 @@ namespace SqlSugar builder.SqlQueryBuilder.sql.Append(sql); if (parsmeterArray != null && parsmeterArray.Any()) builder.SqlQueryBuilder.Parameters.AddRange(parsmeterArray); - using (var dataReader =await this.GetDataReaderNoCloseAsync(builder.SqlQueryBuilder.ToSqlString(), builder.SqlQueryBuilder.Parameters.ToArray())) + using (var dataReader = await this.GetDataReaderNoCloseAsync(builder.SqlQueryBuilder.ToSqlString(), builder.SqlQueryBuilder.Parameters.ToArray())) { List result = await this.DbBind.DataReaderToListNoUsingAsync(typeof(T), dataReader); NextResult(dataReader); @@ -1302,17 +1191,17 @@ namespace SqlSugar public virtual async Task SqlQuerySingleAsync(string sql, object parameters = null) { - var result =await SqlQueryAsync(sql, parameters); + var result = await SqlQueryAsync(sql, parameters); return result == null ? default(T) : result.FirstOrDefault(); } public virtual async Task SqlQuerySingleAsync(string sql, params SugarParameter[] parameters) { - var result =await SqlQueryAsync(sql, parameters); + var result = await SqlQueryAsync(sql, parameters); return result == null ? default(T) : result.FirstOrDefault(); } public virtual async Task SqlQuerySingleAsync(string sql, List parameters) { - var result =await SqlQueryAsync(sql, parameters); + var result = await SqlQueryAsync(sql, parameters); return result == null ? default(T) : result.FirstOrDefault(); } @@ -1343,7 +1232,7 @@ namespace SqlSugar public virtual async Task GetDataTableAsync(string sql, params SugarParameter[] parameters) { - var ds =await GetDataSetAllAsync(sql, parameters); + var ds = await GetDataSetAllAsync(sql, parameters); if (ds.Tables.Count != 0 && ds.Tables.Count > 0) return ds.Tables[0]; return new DataTable(); }