From 8150e1aa309e79591255d9a29cd9322d2bcde863 Mon Sep 17 00:00:00 2001 From: sunkaixuan <610262374@qq.com> Date: Thu, 10 Jul 2025 16:52:27 +0800 Subject: [PATCH] Synchronous code --- .../Abstract/CodeFirstProvider/CodeFirstProvider.cs | 2 +- .../Abstract/DeleteProvider/DeleteableProvider.cs | 12 +++++++++++- .../Abstract/InsertableProvider/InsertableHelper.cs | 6 +++++- .../Abstract/SqlBuilderProvider/InsertBuilder.cs | 2 +- .../Abstract/UpdateProvider/UpdateableHelper.cs | 8 ++++++-- 5 files changed, 24 insertions(+), 6 deletions(-) diff --git a/Src/Asp.Net/SqlSugar/Abstract/CodeFirstProvider/CodeFirstProvider.cs b/Src/Asp.Net/SqlSugar/Abstract/CodeFirstProvider/CodeFirstProvider.cs index 192a24acb..04acd1a27 100644 --- a/Src/Asp.Net/SqlSugar/Abstract/CodeFirstProvider/CodeFirstProvider.cs +++ b/Src/Asp.Net/SqlSugar/Abstract/CodeFirstProvider/CodeFirstProvider.cs @@ -368,7 +368,7 @@ namespace SqlSugar var dbColumn = entityInfo.Columns.FirstOrDefault(z => z.PropertyName == it.Key); if (dbColumn == null&&entityInfo.Discrimator==null) { - Check.ExceptionEasy($"{entityInfo.EntityName} no SugarIndex[ {it.Key} ] found", $"类{entityInfo.EntityName} 索引特性没找到属性名 :{it.Key}"); + Check.ExceptionEasy($"{entityInfo.EntityName} no SugarIndex[ {it.Key} ] found", $"类{entityInfo.EntityName} 索引特性没找到列 :{it.Key}"); } return new KeyValuePair(dbColumn.DbColumnName, it.Value); }) diff --git a/Src/Asp.Net/SqlSugar/Abstract/DeleteProvider/DeleteableProvider.cs b/Src/Asp.Net/SqlSugar/Abstract/DeleteProvider/DeleteableProvider.cs index 81e6b1162..bab77b3d3 100644 --- a/Src/Asp.Net/SqlSugar/Abstract/DeleteProvider/DeleteableProvider.cs +++ b/Src/Asp.Net/SqlSugar/Abstract/DeleteProvider/DeleteableProvider.cs @@ -119,6 +119,7 @@ namespace SqlSugar string tableName = this.Context.EntityMaintenance.GetTableName(); var primaryFields = this.GetPrimaryKeys(); var isSinglePrimaryKey = primaryFields.Count == 1; + var isNvarchar = false; Check.Exception(primaryFields.IsNullOrEmpty(), string.Format("Table {0} with no primarykey", tableName)); if (isSinglePrimaryKey) { @@ -128,6 +129,7 @@ namespace SqlSugar { var entityPropertyName = this.Context.EntityMaintenance.GetPropertyName(primaryField); var columnInfo = EntityInfo.Columns.Single(it => it.PropertyName.Equals(entityPropertyName, StringComparison.CurrentCultureIgnoreCase)); + isNvarchar = columnInfo.SqlParameterDbType is System.Data.DbType dbtype && dbtype == System.Data.DbType.String; var value = columnInfo.PropertyInfo.GetValue(deleteObj, null); value = UtilMethods.GetConvertValue(value); if (this.Context.CurrentConnectionConfig?.MoreSettings?.TableEnumIsString!=true&& @@ -151,7 +153,15 @@ namespace SqlSugar } else if (primaryKeyValues.Count < 10000) { - var inValueString = primaryKeyValues.ToArray().ToJoinSqlInVals(); + var inValueString = string.Empty; + if (isNvarchar) + { + inValueString = primaryKeyValues.ToArray().ToJoinSqlInValsByVarchar(); + } + else + { + inValueString = primaryKeyValues.ToArray().ToJoinSqlInVals(); + } Where(string.Format(DeleteBuilder.WhereInTemplate, SqlBuilder.GetTranslationColumnName(primaryFields.Single()), inValueString)); } else diff --git a/Src/Asp.Net/SqlSugar/Abstract/InsertableProvider/InsertableHelper.cs b/Src/Asp.Net/SqlSugar/Abstract/InsertableProvider/InsertableHelper.cs index dd76fe0e6..9aee1c191 100644 --- a/Src/Asp.Net/SqlSugar/Abstract/InsertableProvider/InsertableHelper.cs +++ b/Src/Asp.Net/SqlSugar/Abstract/InsertableProvider/InsertableHelper.cs @@ -124,10 +124,14 @@ namespace SqlSugar { continue; } - if (item.SqlParameterDbType is Type) + if (item.SqlParameterDbType is Type) { continue; } + else if (item.SqlParameterDbType is System.Data.DbType dbtype) + { + paramters.DbType = dbtype; + } if (item.IsJson) { paramters.IsJson = true; diff --git a/Src/Asp.Net/SqlSugar/Abstract/SqlBuilderProvider/InsertBuilder.cs b/Src/Asp.Net/SqlSugar/Abstract/SqlBuilderProvider/InsertBuilder.cs index 10628faf3..e790849bc 100644 --- a/Src/Asp.Net/SqlSugar/Abstract/SqlBuilderProvider/InsertBuilder.cs +++ b/Src/Asp.Net/SqlSugar/Abstract/SqlBuilderProvider/InsertBuilder.cs @@ -217,7 +217,7 @@ namespace SqlSugar public virtual object FormatValue(object value) { var N = "N"; - if (this.Context.CurrentConnectionConfig.DbType == DbType.Sqlite) + if (this.Context.CurrentConnectionConfig.DbType == DbType.Sqlite) { N = ""; } diff --git a/Src/Asp.Net/SqlSugar/Abstract/UpdateProvider/UpdateableHelper.cs b/Src/Asp.Net/SqlSugar/Abstract/UpdateProvider/UpdateableHelper.cs index c0571cca8..cc41dfedf 100644 --- a/Src/Asp.Net/SqlSugar/Abstract/UpdateProvider/UpdateableHelper.cs +++ b/Src/Asp.Net/SqlSugar/Abstract/UpdateProvider/UpdateableHelper.cs @@ -6,7 +6,7 @@ using System.Linq.Expressions; using System.Runtime.CompilerServices; using System.Text; using System.Text.RegularExpressions; -using System.Threading.Tasks; +using System.Threading.Tasks; namespace SqlSugar { @@ -514,13 +514,17 @@ namespace SqlSugar if (item.SqlParameterDbType is Type) { continue; - } + } var parameter = new SugarParameter(this.SqlBuilder.SqlParameterKeyWord + item.DbColumnName, item.Value, item.PropertyType); if (item.IsJson) { parameter.IsJson = true; SqlBuilder.ChangeJsonType(parameter); } + if (item.SqlParameterDbType is System.Data.DbType dbtype) + { + parameter.DbType = dbtype; + } if (item.IsArray) { parameter.IsArray = true;