From ccfa7177b12e2dbfaead6c8d0e9fe1b772ea2ec5 Mon Sep 17 00:00:00 2001 From: skx <610262374@qq.com> Date: Sat, 26 Sep 2020 15:38:59 +0800 Subject: [PATCH] Update Sqlite Insertable --- .../Sqlite/SqlBuilder/SqliteInsertBuilder.cs | 43 +++++++++++++++++++ 1 file changed, 43 insertions(+) diff --git a/Src/Asp.Net/SqlSugar/Realization/Sqlite/SqlBuilder/SqliteInsertBuilder.cs b/Src/Asp.Net/SqlSugar/Realization/Sqlite/SqlBuilder/SqliteInsertBuilder.cs index e5babf1b6..98841db0f 100644 --- a/Src/Asp.Net/SqlSugar/Realization/Sqlite/SqlBuilder/SqliteInsertBuilder.cs +++ b/Src/Asp.Net/SqlSugar/Realization/Sqlite/SqlBuilder/SqliteInsertBuilder.cs @@ -1,4 +1,6 @@ using System; +using System.Linq; +using System.Text; namespace SqlSugar { @@ -33,7 +35,48 @@ namespace SqlSugar return "INSERT INTO {0} ({1})"; } } + public override string ToSqlString() + { + if (IsNoInsertNull) + { + DbColumnInfoList = DbColumnInfoList.Where(it => it.Value != null).ToList(); + } + var groupList = DbColumnInfoList.GroupBy(it => it.TableId).ToList(); + var isSingle = groupList.Count() == 1; + string columnsString = string.Join(",", groupList.First().Select(it => Builder.GetTranslationColumnName(it.DbColumnName))); + if (isSingle) + { + string columnParametersString = string.Join(",", this.DbColumnInfoList.Select(it => Builder.SqlParameterKeyWord + it.DbColumnName)); + return string.Format(SqlTemplate, GetTableNameString, columnsString, columnParametersString); + } + else + { + StringBuilder batchInsetrSql = new StringBuilder(); + batchInsetrSql.Append("INSERT INTO " + GetTableNameString + " "); + batchInsetrSql.Append("("); + batchInsetrSql.Append(columnsString); + batchInsetrSql.Append(") VALUES"); + string insertColumns = ""; + foreach (var item in groupList) + { + batchInsetrSql.Append("("); + insertColumns = string.Join(",", item.Select(it => FormatValue(it.Value))); + batchInsetrSql.Append(insertColumns); + if (groupList.Last() == item) + { + batchInsetrSql.Append(") "); + } + else + { + batchInsetrSql.Append("), "); + } + } + batchInsetrSql.AppendLine(";SELECT LAST_INSERT_ROWID();"); + var result = batchInsetrSql.ToString(); + return result; + } + } public override object FormatValue(object value) { if (value == null)