From 03e33d5fcd4cc800beeb0cc3e8aa5f1172ca141e Mon Sep 17 00:00:00 2001 From: sunkaixuan <610262374@qq.com> Date: Mon, 15 May 2017 15:53:57 +0800 Subject: [PATCH 1/7] Batch Insert --- .../DMLBuilder/InsertBuilder.cs | 44 ++++++++++++++++++- 1 file changed, 42 insertions(+), 2 deletions(-) diff --git a/SqlSugar/Abstract/DbProvider/SqlBuilderProvider/DMLBuilder/InsertBuilder.cs b/SqlSugar/Abstract/DbProvider/SqlBuilderProvider/DMLBuilder/InsertBuilder.cs index aa2c14930..fd9cb0624 100644 --- a/SqlSugar/Abstract/DbProvider/SqlBuilderProvider/DMLBuilder/InsertBuilder.cs +++ b/SqlSugar/Abstract/DbProvider/SqlBuilderProvider/DMLBuilder/InsertBuilder.cs @@ -46,6 +46,26 @@ namespace SqlSugar } } + public virtual string SqlTemplateBatch { + get { + return "INSERT {0} ({1})"; + } + } + + public virtual string SqlTemplateBatchSelect { + get { + return "N'{0}' AS {1}"; + } + } + + public virtual string SqlTemplateBatchUnion + { + get + { + return "\r\nUNION ALL "; + } + } + public virtual void Clear() { @@ -78,9 +98,29 @@ namespace SqlSugar } public virtual string ToSqlString() { + var groupList = DbColumnInfoList.GroupBy(it => it.TableId).ToList(); + var isSingle = groupList.Count() == 1; string columnsString = string.Join(",", this.DbColumnInfoList.Select(it => Builder.GetTranslationColumnName(it.ColumnName))); - string columnParametersString = string.Join(",", this.DbColumnInfoList.Select(it => Builder.SqlParameterKeyWord + it.ColumnName)); - return string.Format(SqlTemplate, GetTableNameString, columnsString, columnParametersString); + if (isSingle) + { + string columnParametersString = string.Join(",", this.DbColumnInfoList.Select(it => Builder.SqlParameterKeyWord + it.ColumnName)); + return string.Format(SqlTemplate, GetTableNameString, columnsString, columnParametersString); + } + else { + StringBuilder batchInsetrSql = new StringBuilder(); + batchInsetrSql.AppendFormat(GetTableNameString, columnsString); + int i = 0; + foreach (var columns in groupList) + { + var isFirst = i == 0; + if (!isFirst) { + batchInsetrSql.Append(SqlTemplateBatchUnion); + } + batchInsetrSql.Append("\r\n SELECT "+string.Join(",", columns.Select(it => string.Format(SqlTemplateBatchSelect,it.ColumnName,it.Value)))); + ++i; + } + return batchInsetrSql.ToString(); + } } } } From d532289a3e604bc1b43156f529f48537a1652415 Mon Sep 17 00:00:00 2001 From: sunkaixuan <610262374@qq.com> Date: Mon, 15 May 2017 16:45:49 +0800 Subject: [PATCH 2/7] - --- OrmTest/UnitTest/Insert.cs | 4 ++- .../DMLBuilder/InsertBuilder.cs | 32 ++++++++++++++++--- .../InsertableProvider/InsertableProvider.cs | 1 + 3 files changed, 31 insertions(+), 6 deletions(-) diff --git a/OrmTest/UnitTest/Insert.cs b/OrmTest/UnitTest/Insert.cs index 5f11ca04b..ed995abf5 100644 --- a/OrmTest/UnitTest/Insert.cs +++ b/OrmTest/UnitTest/Insert.cs @@ -19,7 +19,7 @@ namespace OrmTest.UnitTest public void Init() { var db = GetInstance(); var insertObj = new Student() { Name="jack",CreateTime=DateTime.Now }; - var insertObjs = new List() { insertObj }.ToArray(); + var insertObjs = new List() { insertObj , insertObj }.ToArray(); db.IgnoreColumns.Add("TestId", "Student"); //db.MappingColumns.Add("id","dbid", "Student"); @@ -45,6 +45,8 @@ namespace OrmTest.UnitTest var s7= db.Insertable(insertObj).With(SqlWith.UpdLock) .InsertColumns(it => new { it.Name }).ToSql(); + db.IgnoreColumns = new IgnoreComumnList(); + db.IgnoreColumns.Add("TestId", "Student"); //Insert List var s8= db.Insertable(insertObjs).With(SqlWith.UpdLock).ToSql(); } diff --git a/SqlSugar/Abstract/DbProvider/SqlBuilderProvider/DMLBuilder/InsertBuilder.cs b/SqlSugar/Abstract/DbProvider/SqlBuilderProvider/DMLBuilder/InsertBuilder.cs index fd9cb0624..8ffaab0d4 100644 --- a/SqlSugar/Abstract/DbProvider/SqlBuilderProvider/DMLBuilder/InsertBuilder.cs +++ b/SqlSugar/Abstract/DbProvider/SqlBuilderProvider/DMLBuilder/InsertBuilder.cs @@ -54,7 +54,7 @@ namespace SqlSugar public virtual string SqlTemplateBatchSelect { get { - return "N'{0}' AS {1}"; + return "{0} AS {1}"; } } @@ -62,7 +62,7 @@ namespace SqlSugar { get { - return "\r\nUNION ALL "; + return "\t\r\nUNION ALL "; } } @@ -100,7 +100,7 @@ namespace SqlSugar { var groupList = DbColumnInfoList.GroupBy(it => it.TableId).ToList(); var isSingle = groupList.Count() == 1; - string columnsString = string.Join(",", this.DbColumnInfoList.Select(it => Builder.GetTranslationColumnName(it.ColumnName))); + string columnsString = string.Join(",", groupList.First().Select(it => Builder.GetTranslationColumnName(it.ColumnName))); if (isSingle) { string columnParametersString = string.Join(",", this.DbColumnInfoList.Select(it => Builder.SqlParameterKeyWord + it.ColumnName)); @@ -108,7 +108,7 @@ namespace SqlSugar } else { StringBuilder batchInsetrSql = new StringBuilder(); - batchInsetrSql.AppendFormat(GetTableNameString, columnsString); + batchInsetrSql.AppendFormat(SqlTemplateBatch, GetTableNameString, columnsString); int i = 0; foreach (var columns in groupList) { @@ -116,11 +116,33 @@ namespace SqlSugar if (!isFirst) { batchInsetrSql.Append(SqlTemplateBatchUnion); } - batchInsetrSql.Append("\r\n SELECT "+string.Join(",", columns.Select(it => string.Format(SqlTemplateBatchSelect,it.ColumnName,it.Value)))); + batchInsetrSql.Append("\r\n SELECT "+string.Join(",", columns.Select(it => string.Format(SqlTemplateBatchSelect, FormatValue(it.Value), it.ColumnName)))); ++i; } return batchInsetrSql.ToString(); } } + + public object FormatValue(object value) + { + if (value == null) + { + return "NULL"; + } + else { + var type = value.GetType(); + if (type == PubConst.DateType) + { + return "'" + value.ObjToDate().ToString("yyyy-MM-dd hh:mm:ss.ms") + "'"; + } + else if (type == PubConst.StringType|| type == PubConst.ObjType) + { + return "N'" + value.ToString().ToSqlFilter() + "'"; + } + else { + return "N'" + value.ToString() + "'"; + } + } + } } } diff --git a/SqlSugar/Abstract/InsertableProvider/InsertableProvider.cs b/SqlSugar/Abstract/InsertableProvider/InsertableProvider.cs index f129cf7e3..77bb7214b 100644 --- a/SqlSugar/Abstract/InsertableProvider/InsertableProvider.cs +++ b/SqlSugar/Abstract/InsertableProvider/InsertableProvider.cs @@ -154,6 +154,7 @@ namespace SqlSugar insertItem.Add(columnInfo); } this.InsertBuilder.DbColumnInfoList.AddRange(insertItem); + ++i; } } private string GetDbColumnName(string entityName) From 910c00fb1689432d0ed0eb89b3f71dd02f289967 Mon Sep 17 00:00:00 2001 From: sunkaixuan <610262374@qq.com> Date: Mon, 15 May 2017 20:44:06 +0800 Subject: [PATCH 3/7] - --- OrmTest/OrmTest.csproj | 1 + OrmTest/UnitTest/Mapping .cs | 31 +++++++++++ .../DbMaintenanceProvider.cs | 51 ++++++++++--------- 3 files changed, 59 insertions(+), 24 deletions(-) create mode 100644 OrmTest/UnitTest/Mapping .cs diff --git a/OrmTest/OrmTest.csproj b/OrmTest/OrmTest.csproj index e6cfed6d4..4099274bf 100644 --- a/OrmTest/OrmTest.csproj +++ b/OrmTest/OrmTest.csproj @@ -64,6 +64,7 @@ + diff --git a/OrmTest/UnitTest/Mapping .cs b/OrmTest/UnitTest/Mapping .cs new file mode 100644 index 000000000..4c6086ab9 --- /dev/null +++ b/OrmTest/UnitTest/Mapping .cs @@ -0,0 +1,31 @@ +using OrmTest.Models; +using SqlSugar; +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace OrmTest.UnitTest +{ + public class Mapping:ExpTestBase + { + private Mapping() { } + public Mapping(int eachCount) + { + this.Count = eachCount; + } + + public void Init() { + + var db = GetInstance(); + var s1= db.Queryable().ToSql(); + } + + public SqlSugarClient GetInstance() + { + SqlSugarClient db = new SqlSugarClient(new AttrbuitesCofnig() { ConnectionString = Config.ConnectionString, DbType = DbType.SqlServer, IsAutoCloseConnection = true, EntityNamespace= "OrmTest.Models" }); + return db; + } + } +} diff --git a/SqlSugar/Abstract/DbProvider/DbMaintenanceProvider/DbMaintenanceProvider.cs b/SqlSugar/Abstract/DbProvider/DbMaintenanceProvider/DbMaintenanceProvider.cs index 5952713fc..f52a7a441 100644 --- a/SqlSugar/Abstract/DbProvider/DbMaintenanceProvider/DbMaintenanceProvider.cs +++ b/SqlSugar/Abstract/DbProvider/DbMaintenanceProvider/DbMaintenanceProvider.cs @@ -86,33 +86,36 @@ namespace SqlSugar { this.GetTableInfoList(); } - var entity = this.Context.MappingTables.SingleOrDefault(it => it.DbTableName.Equals(tableName, StringComparison.CurrentCultureIgnoreCase)); - var entityName = entity == null ? tableName : entity.EntityName; - var assembly = Assembly.Load(this.Context.EntityNamespace.Split('.').First()); - foreach (var item in assembly.GetType(this.Context.EntityNamespace + "." + entityName).GetProperties()) + var entities = this.Context.MappingTables.Where(it => it.DbTableName.Equals(tableName, StringComparison.CurrentCultureIgnoreCase)).ToList(); + foreach (var entity in entities) { - var isVirtual = item.GetGetMethod().IsVirtual; - if (isVirtual) continue; - var sugarColumn = item.GetCustomAttributes(typeof(SugarColumn), true) - .Where(it => it is SugarColumn) - .Select(it => (SugarColumn)it) - .Where(it => it.ColumnName.IsValuable()) - .FirstOrDefault(); - if (sugarColumn.IsNullOrEmpty()) + var entityName = entity == null ? tableName : entity.EntityName; + var assembly = Assembly.Load(this.Context.EntityNamespace.Split('.').First()); + foreach (var item in assembly.GetType(this.Context.EntityNamespace + "." + entityName).GetProperties()) { - reval.Add(new DbColumnInfo() { ColumnName = item.Name }); - } - else - { - if (sugarColumn.IsIgnore == false) + var isVirtual = item.GetGetMethod().IsVirtual; + if (isVirtual) continue; + var sugarColumn = item.GetCustomAttributes(typeof(SugarColumn), true) + .Where(it => it is SugarColumn) + .Select(it => (SugarColumn)it) + .Where(it => it.ColumnName.IsValuable()) + .FirstOrDefault(); + if (sugarColumn.IsNullOrEmpty()) { - var columnInfo = new DbColumnInfo(); - columnInfo.ColumnName = sugarColumn.ColumnName.IsNullOrEmpty() ? item.Name : sugarColumn.ColumnName; - columnInfo.IsPrimarykey = sugarColumn.IsPrimaryKey; - columnInfo.IsIdentity = sugarColumn.IsIdentity; - columnInfo.ColumnDescription = sugarColumn.ColumnDescription; - columnInfo.TableName = entity.IsNullOrEmpty() ? tableName : entity.DbTableName; - reval.Add(columnInfo); + reval.Add(new DbColumnInfo() { ColumnName = item.Name }); + } + else + { + if (sugarColumn.IsIgnore == false) + { + var columnInfo = new DbColumnInfo(); + columnInfo.ColumnName = sugarColumn.ColumnName.IsNullOrEmpty() ? item.Name : sugarColumn.ColumnName; + columnInfo.IsPrimarykey = sugarColumn.IsPrimaryKey; + columnInfo.IsIdentity = sugarColumn.IsIdentity; + columnInfo.ColumnDescription = sugarColumn.ColumnDescription; + columnInfo.TableName = entity.IsNullOrEmpty() ? tableName : entity.DbTableName; + reval.Add(columnInfo); + } } } } From 0340d164a24049bbe90081871b04a5093440d1c1 Mon Sep 17 00:00:00 2001 From: sunkaixuan <610262374@qq.com> Date: Tue, 16 May 2017 13:36:37 +0800 Subject: [PATCH 4/7] - --- OrmTest/Program.cs | 4 +-- OrmTest/UnitTest/Insert.cs | 22 ++++++++------- .../DMLBuilder/InsertBuilder.cs | 27 ++++++++++++------- 3 files changed, 33 insertions(+), 20 deletions(-) diff --git a/OrmTest/Program.cs b/OrmTest/Program.cs index 6630a93da..b57fd662f 100644 --- a/OrmTest/Program.cs +++ b/OrmTest/Program.cs @@ -25,8 +25,8 @@ namespace OrmTest //new SingleQuery(1).Init(); //new SelectQuery(1).Init(); //new AutoClose(1).Init(); - //new Insert(1).Init(); - new Delete(1).Init(); + new Insert(1).Init(); + //new Delete(1).Init(); //Performance Test //new SqlSugarPerformance(100).Select(); } diff --git a/OrmTest/UnitTest/Insert.cs b/OrmTest/UnitTest/Insert.cs index ed995abf5..e7f93ced9 100644 --- a/OrmTest/UnitTest/Insert.cs +++ b/OrmTest/UnitTest/Insert.cs @@ -19,36 +19,40 @@ namespace OrmTest.UnitTest public void Init() { var db = GetInstance(); var insertObj = new Student() { Name="jack",CreateTime=DateTime.Now }; - var insertObjs = new List() { insertObj , insertObj }.ToArray(); db.IgnoreColumns.Add("TestId", "Student"); //db.MappingColumns.Add("id","dbid", "Student"); - var s1= db.Insertable(insertObj).ToSql(); + var s1= db.Insertable(insertObj).ToSql(); //Insert reutrn Command Count - var s2=db.Insertable(insertObj).ExecuteCommand(); + var s2=db.Insertable(insertObj).ExecuteCommand(); db.IgnoreColumns = null; //Only insert Name - var s3 = db.Insertable(insertObj).InsertColumns(it => new {it.Name}).ToSql(); + var s3 = db.Insertable(insertObj).InsertColumns(it => new {it.Name}).ToSql(); //Ignore Name and TestId - var s4=db.Insertable(insertObj).IgnoreColumns(it => new{ it.Name,it.TestId }).ToSql(); + var s4=db.Insertable(insertObj).IgnoreColumns(it => new{ it.Name,it.TestId }).ToSql(); //Ignore Name and TestId - var s5 = db.Insertable(insertObj).IgnoreColumns(it => it == "Name" || it == "TestId").With(SqlWith.UpdLock).ToSql(); + var s5 = db.Insertable(insertObj).IgnoreColumns(it => it == "Name" || it == "TestId").With(SqlWith.UpdLock).ToSql(); //Use Lock - var s6 =db.Insertable(insertObj).With(SqlWith.UpdLock).ToSql(); + var s6 =db.Insertable(insertObj).With(SqlWith.UpdLock).ToSql(); //ToSql - var s7= db.Insertable(insertObj).With(SqlWith.UpdLock) + var s7= db.Insertable(insertObj).With(SqlWith.UpdLock) .InsertColumns(it => new { it.Name }).ToSql(); db.IgnoreColumns = new IgnoreComumnList(); db.IgnoreColumns.Add("TestId", "Student"); //Insert List - var s8= db.Insertable(insertObjs).With(SqlWith.UpdLock).ToSql(); + var insertObjs = new List(); + for (int i = 0; i < 1000; i++) + { + insertObjs.Add(new Student() { Name="name"+i }); + } + var s8= db.Insertable(insertObjs.ToArray()).InsertColumns(it=>new{ it.Name}).With(SqlWith.UpdLock).ToSql(); } public SqlSugarClient GetInstance() diff --git a/SqlSugar/Abstract/DbProvider/SqlBuilderProvider/DMLBuilder/InsertBuilder.cs b/SqlSugar/Abstract/DbProvider/SqlBuilderProvider/DMLBuilder/InsertBuilder.cs index 8ffaab0d4..baf253380 100644 --- a/SqlSugar/Abstract/DbProvider/SqlBuilderProvider/DMLBuilder/InsertBuilder.cs +++ b/SqlSugar/Abstract/DbProvider/SqlBuilderProvider/DMLBuilder/InsertBuilder.cs @@ -108,16 +108,25 @@ namespace SqlSugar } else { StringBuilder batchInsetrSql = new StringBuilder(); - batchInsetrSql.AppendFormat(SqlTemplateBatch, GetTableNameString, columnsString); - int i = 0; - foreach (var columns in groupList) - { - var isFirst = i == 0; - if (!isFirst) { - batchInsetrSql.Append(SqlTemplateBatchUnion); + int pageSize = 200; + int pageIndex = 1; + int totalRecord = groupList.Count; + int pageCount = (totalRecord + pageSize - 1) / pageSize; + while (pageCount >= pageIndex) { + batchInsetrSql.AppendFormat(SqlTemplateBatch, GetTableNameString, columnsString); + int i = 0; + foreach (var columns in groupList.Skip((pageIndex-1)*pageSize).Take(pageSize).ToList()) + { + var isFirst = i == 0; + if (!isFirst) + { + batchInsetrSql.Append(SqlTemplateBatchUnion); + } + batchInsetrSql.Append("\r\n SELECT " + string.Join(",", columns.Select(it => string.Format(SqlTemplateBatchSelect, FormatValue(it.Value), it.ColumnName)))); + ++i; } - batchInsetrSql.Append("\r\n SELECT "+string.Join(",", columns.Select(it => string.Format(SqlTemplateBatchSelect, FormatValue(it.Value), it.ColumnName)))); - ++i; + pageIndex++; + batchInsetrSql.Append("\r\nGO\r\n"); } return batchInsetrSql.ToString(); } From 9562e71cfa65f426f11747d2e2f6aa3004f5d313 Mon Sep 17 00:00:00 2001 From: sunkaixuan <610262374@qq.com> Date: Tue, 16 May 2017 13:55:57 +0800 Subject: [PATCH 5/7] - --- OrmTest/OrmTest.csproj | 2 +- OrmTest/Program.cs | 4 ++-- OrmTest/UnitTest/Delete.cs | 2 +- OrmTest/UnitTest/ExpressionTest/Field.cs | 2 +- OrmTest/UnitTest/ExpressionTest/Method.cs | 2 +- OrmTest/UnitTest/ExpressionTest/Select.cs | 2 +- OrmTest/UnitTest/ExpressionTest/Where.cs | 2 +- OrmTest/UnitTest/Insert.cs | 2 +- OrmTest/UnitTest/Mapping .cs | 2 +- OrmTest/UnitTest/Query/JoinQuery.cs | 2 +- OrmTest/UnitTest/Query/SelectQuery.cs | 2 +- OrmTest/UnitTest/Query/SingleQuery.cs | 2 +- OrmTest/UnitTest/Setting/Attribute.cs | 2 +- OrmTest/UnitTest/Setting/AutoClose.cs | 2 +- OrmTest/UnitTest/Setting/MapColumn.cs | 2 +- OrmTest/UnitTest/Setting/MapTable.cs | 2 +- .../{ExpressionTest/ExpTestBase.cs => UnitTestBase.cs} | 2 +- 17 files changed, 18 insertions(+), 18 deletions(-) rename OrmTest/UnitTest/{ExpressionTest/ExpTestBase.cs => UnitTestBase.cs} (98%) diff --git a/OrmTest/OrmTest.csproj b/OrmTest/OrmTest.csproj index 4099274bf..f163b2ed9 100644 --- a/OrmTest/OrmTest.csproj +++ b/OrmTest/OrmTest.csproj @@ -61,7 +61,7 @@ - + diff --git a/OrmTest/Program.cs b/OrmTest/Program.cs index b57fd662f..6630a93da 100644 --- a/OrmTest/Program.cs +++ b/OrmTest/Program.cs @@ -25,8 +25,8 @@ namespace OrmTest //new SingleQuery(1).Init(); //new SelectQuery(1).Init(); //new AutoClose(1).Init(); - new Insert(1).Init(); - //new Delete(1).Init(); + //new Insert(1).Init(); + new Delete(1).Init(); //Performance Test //new SqlSugarPerformance(100).Select(); } diff --git a/OrmTest/UnitTest/Delete.cs b/OrmTest/UnitTest/Delete.cs index f925bd9ed..aee3b5364 100644 --- a/OrmTest/UnitTest/Delete.cs +++ b/OrmTest/UnitTest/Delete.cs @@ -9,7 +9,7 @@ using System.Threading.Tasks; namespace OrmTest { - public class Delete : ExpTestBase + public class Delete : UnitTestBase { private Delete() { } public Delete(int eachCount) diff --git a/OrmTest/UnitTest/ExpressionTest/Field.cs b/OrmTest/UnitTest/ExpressionTest/Field.cs index 8e5404ca4..583a00319 100644 --- a/OrmTest/UnitTest/ExpressionTest/Field.cs +++ b/OrmTest/UnitTest/ExpressionTest/Field.cs @@ -9,7 +9,7 @@ using System.Threading.Tasks; namespace OrmTest.UnitTest { - public class Field : ExpTestBase + public class Field : UnitTestBase { private Field() { } public Field(int eachCount) diff --git a/OrmTest/UnitTest/ExpressionTest/Method.cs b/OrmTest/UnitTest/ExpressionTest/Method.cs index 896bfabd3..0e180527d 100644 --- a/OrmTest/UnitTest/ExpressionTest/Method.cs +++ b/OrmTest/UnitTest/ExpressionTest/Method.cs @@ -9,7 +9,7 @@ using System.Threading.Tasks; namespace OrmTest.UnitTest { - public class Method : ExpTestBase + public class Method : UnitTestBase { private Method() { } public Method(int eachCount) diff --git a/OrmTest/UnitTest/ExpressionTest/Select.cs b/OrmTest/UnitTest/ExpressionTest/Select.cs index 1c3c6816a..4686721ce 100644 --- a/OrmTest/UnitTest/ExpressionTest/Select.cs +++ b/OrmTest/UnitTest/ExpressionTest/Select.cs @@ -9,7 +9,7 @@ using System.Threading.Tasks; namespace OrmTest.UnitTest { - public class Select : ExpTestBase + public class Select : UnitTestBase { private Select() { } public Select(int eachCount) diff --git a/OrmTest/UnitTest/ExpressionTest/Where.cs b/OrmTest/UnitTest/ExpressionTest/Where.cs index adcbe9396..d842deadb 100644 --- a/OrmTest/UnitTest/ExpressionTest/Where.cs +++ b/OrmTest/UnitTest/ExpressionTest/Where.cs @@ -9,7 +9,7 @@ using System.Threading.Tasks; namespace OrmTest.UnitTest { - public class Where : ExpTestBase + public class Where : UnitTestBase { private Where() { } public Where(int eachCount) diff --git a/OrmTest/UnitTest/Insert.cs b/OrmTest/UnitTest/Insert.cs index e7f93ced9..98f283296 100644 --- a/OrmTest/UnitTest/Insert.cs +++ b/OrmTest/UnitTest/Insert.cs @@ -8,7 +8,7 @@ using System.Threading.Tasks; namespace OrmTest.UnitTest { - public class Insert : ExpTestBase + public class Insert : UnitTestBase { private Insert() { } public Insert(int eachCount) diff --git a/OrmTest/UnitTest/Mapping .cs b/OrmTest/UnitTest/Mapping .cs index 4c6086ab9..7db4d6ef4 100644 --- a/OrmTest/UnitTest/Mapping .cs +++ b/OrmTest/UnitTest/Mapping .cs @@ -8,7 +8,7 @@ using System.Threading.Tasks; namespace OrmTest.UnitTest { - public class Mapping:ExpTestBase + public class Mapping:UnitTestBase { private Mapping() { } public Mapping(int eachCount) diff --git a/OrmTest/UnitTest/Query/JoinQuery.cs b/OrmTest/UnitTest/Query/JoinQuery.cs index 20a71cd50..f17a440e5 100644 --- a/OrmTest/UnitTest/Query/JoinQuery.cs +++ b/OrmTest/UnitTest/Query/JoinQuery.cs @@ -8,7 +8,7 @@ using System.Linq.Expressions; using OrmTest.Models; namespace OrmTest.UnitTest { - public class JoinQuery : ExpTestBase + public class JoinQuery : UnitTestBase { private JoinQuery() { } public JoinQuery(int eachCount) diff --git a/OrmTest/UnitTest/Query/SelectQuery.cs b/OrmTest/UnitTest/Query/SelectQuery.cs index b080fee42..085769ad5 100644 --- a/OrmTest/UnitTest/Query/SelectQuery.cs +++ b/OrmTest/UnitTest/Query/SelectQuery.cs @@ -8,7 +8,7 @@ using System.Linq.Expressions; using OrmTest.Models; namespace OrmTest.UnitTest { - public class SelectQuery : ExpTestBase + public class SelectQuery : UnitTestBase { private SelectQuery() { } public SelectQuery(int eachCount) diff --git a/OrmTest/UnitTest/Query/SingleQuery.cs b/OrmTest/UnitTest/Query/SingleQuery.cs index efc1162fc..844c7943f 100644 --- a/OrmTest/UnitTest/Query/SingleQuery.cs +++ b/OrmTest/UnitTest/Query/SingleQuery.cs @@ -8,7 +8,7 @@ using System.Linq.Expressions; using OrmTest.Models; namespace OrmTest.UnitTest { - public class SingleQuery : ExpTestBase + public class SingleQuery : UnitTestBase { private SingleQuery() { } public SingleQuery(int eachCount) diff --git a/OrmTest/UnitTest/Setting/Attribute.cs b/OrmTest/UnitTest/Setting/Attribute.cs index a57a7f56b..e0e8da931 100644 --- a/OrmTest/UnitTest/Setting/Attribute.cs +++ b/OrmTest/UnitTest/Setting/Attribute.cs @@ -6,7 +6,7 @@ using System.Threading.Tasks; namespace OrmTest.UnitTest { - public class Attribute : ExpTestBase + public class Attribute : UnitTestBase { public Attribute(int eachCount) { diff --git a/OrmTest/UnitTest/Setting/AutoClose.cs b/OrmTest/UnitTest/Setting/AutoClose.cs index 55dabc6c0..738fe3aca 100644 --- a/OrmTest/UnitTest/Setting/AutoClose.cs +++ b/OrmTest/UnitTest/Setting/AutoClose.cs @@ -8,7 +8,7 @@ using System.Threading.Tasks; namespace OrmTest.UnitTest { - public class AutoClose : ExpTestBase + public class AutoClose : UnitTestBase { public AutoClose(int eachCount) { diff --git a/OrmTest/UnitTest/Setting/MapColumn.cs b/OrmTest/UnitTest/Setting/MapColumn.cs index 9ed1b4f51..5a0a38777 100644 --- a/OrmTest/UnitTest/Setting/MapColumn.cs +++ b/OrmTest/UnitTest/Setting/MapColumn.cs @@ -7,7 +7,7 @@ using System.Threading.Tasks; namespace OrmTest.UnitTest { - public class MapColumn : ExpTestBase + public class MapColumn : UnitTestBase { public SqlSugarClient GetInstance() { diff --git a/OrmTest/UnitTest/Setting/MapTable.cs b/OrmTest/UnitTest/Setting/MapTable.cs index dad861d67..81843a385 100644 --- a/OrmTest/UnitTest/Setting/MapTable.cs +++ b/OrmTest/UnitTest/Setting/MapTable.cs @@ -8,7 +8,7 @@ using System.Threading.Tasks; namespace OrmTest.UnitTest { - public class MapTable : ExpTestBase + public class MapTable : UnitTestBase { public void Init() { diff --git a/OrmTest/UnitTest/ExpressionTest/ExpTestBase.cs b/OrmTest/UnitTest/UnitTestBase.cs similarity index 98% rename from OrmTest/UnitTest/ExpressionTest/ExpTestBase.cs rename to OrmTest/UnitTest/UnitTestBase.cs index b83c6fe22..c4d76d06b 100644 --- a/OrmTest/UnitTest/ExpressionTest/ExpTestBase.cs +++ b/OrmTest/UnitTest/UnitTestBase.cs @@ -4,7 +4,7 @@ using SqlSugar; using System.Linq; namespace OrmTest.UnitTest { - public class ExpTestBase + public class UnitTestBase { public int Count { get; set; } private DateTime BeginTime { get; set; } From a59d8cb6e391ccdd40a96c6d3076606dfcbb1588 Mon Sep 17 00:00:00 2001 From: sunkaixuan <610262374@qq.com> Date: Tue, 16 May 2017 14:00:51 +0800 Subject: [PATCH 6/7] - --- SqlSugar/Abstract/DeleteProvider/DeleteableProvider.cs | 9 ++++++++- SqlSugar/Interface/IDeleteable.cs | 1 + 2 files changed, 9 insertions(+), 1 deletion(-) diff --git a/SqlSugar/Abstract/DeleteProvider/DeleteableProvider.cs b/SqlSugar/Abstract/DeleteProvider/DeleteableProvider.cs index 9562be779..d9544d68b 100644 --- a/SqlSugar/Abstract/DeleteProvider/DeleteableProvider.cs +++ b/SqlSugar/Abstract/DeleteProvider/DeleteableProvider.cs @@ -105,7 +105,14 @@ namespace SqlSugar } return this; } - + public IDeleteable In(List primaryKeyValues) { + if (primaryKeyValues == null || primaryKeyValues.Count() == 0) + { + Where("1=2 "); + return this; + } + return In(primaryKeyValues.ToArray()); + } public IDeleteable In(PkType[] primaryKeyValues) { if (primaryKeyValues == null || primaryKeyValues.Count() == 0) diff --git a/SqlSugar/Interface/IDeleteable.cs b/SqlSugar/Interface/IDeleteable.cs index d29d972fe..bdc554968 100644 --- a/SqlSugar/Interface/IDeleteable.cs +++ b/SqlSugar/Interface/IDeleteable.cs @@ -16,6 +16,7 @@ namespace SqlSugar IDeleteable Where(List deleteObjs); IDeleteable In(PkType primaryKeyValue); IDeleteable In(PkType[] primaryKeyValues); + IDeleteable In(List primaryKeyValues); IDeleteable Where(string whereString,object whereObj=null); KeyValuePair> ToSql(); } From 6434e6dd0a004241e732c14f1e39eb572c9a9b1a Mon Sep 17 00:00:00 2001 From: sunkaixuan <610262374@qq.com> Date: Tue, 16 May 2017 14:06:16 +0800 Subject: [PATCH 7/7] - --- SqlSugar/SqlSugarClient.cs | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/SqlSugar/SqlSugarClient.cs b/SqlSugar/SqlSugarClient.cs index 46b85496c..53fb7df7f 100644 --- a/SqlSugar/SqlSugarClient.cs +++ b/SqlSugar/SqlSugarClient.cs @@ -253,6 +253,11 @@ namespace SqlSugar reval.Init(); return reval; } + public virtual IInsertable Insertable(List insertObjs) where T : class, new() + { + Check.ArgumentNullException(insertObjs, "Insertable.insertObjs can't be null"); + return this.Insertable(insertObjs.ToArray()); + } public virtual IInsertable Insertable(T insertObj) where T : class, new() { return this.Insertable(new T[] { insertObj });