From c374a0675bee134d44e645af8bc1d8928c84c87b Mon Sep 17 00:00:00 2001 From: sunkaixuan <610262374@qq.com> Date: Fri, 6 Sep 2024 14:40:20 +0800 Subject: [PATCH] Synchronization code --- .../DbMethods/DefaultDbMethod.cs | 1 + .../Kdbndp/SqlBuilder/KdbndpUpdateBuilder.cs | 46 +++++++++++++++++-- 2 files changed, 43 insertions(+), 4 deletions(-) diff --git a/Src/Asp.Net/SqlSugar/ExpressionsToSql/DbMethods/DefaultDbMethod.cs b/Src/Asp.Net/SqlSugar/ExpressionsToSql/DbMethods/DefaultDbMethod.cs index 6bd969b01..1417d40de 100644 --- a/Src/Asp.Net/SqlSugar/ExpressionsToSql/DbMethods/DefaultDbMethod.cs +++ b/Src/Asp.Net/SqlSugar/ExpressionsToSql/DbMethods/DefaultDbMethod.cs @@ -1102,6 +1102,7 @@ namespace SqlSugar sb.Append(" ) "); } var result = sb.ToString(); + result = result.Replace(" = null)", " is null)"); if (result.IsNullOrEmpty()) { return " 1=2 "; diff --git a/Src/Asp.Net/SqlSugar/Realization/Kdbndp/SqlBuilder/KdbndpUpdateBuilder.cs b/Src/Asp.Net/SqlSugar/Realization/Kdbndp/SqlBuilder/KdbndpUpdateBuilder.cs index 49d4bf94e..d0a6a900b 100644 --- a/Src/Asp.Net/SqlSugar/Realization/Kdbndp/SqlBuilder/KdbndpUpdateBuilder.cs +++ b/Src/Asp.Net/SqlSugar/Realization/Kdbndp/SqlBuilder/KdbndpUpdateBuilder.cs @@ -132,7 +132,8 @@ namespace SqlSugar { var columnInfo = tableColumnList.FirstOrDefault(x => x.DbColumnName.Equals(it.DbColumnName, StringComparison.OrdinalIgnoreCase)); var dbType = columnInfo?.DataType; - if (dbType == null) { + if (dbType == null) + { var typeName = it.PropertyType.Name.ToLower(); if (typeName == "int32") typeName = "int"; @@ -140,7 +141,7 @@ namespace SqlSugar typeName = "long"; if (typeName == "int16") typeName = "short"; - if (typeName == "boolean") + if (typeName == "boolean") typeName = "bool"; var isAnyType = PostgreSQLDbBind.MappingTypesConst.Where(x => x.Value.ToString().ToLower() == typeName).Any(); @@ -148,11 +149,38 @@ namespace SqlSugar { dbType = PostgreSQLDbBind.MappingTypesConst.Where(x => x.Value.ToString().ToLower() == typeName).FirstOrDefault().Key; } - else { + else + { dbType = "varchar"; } } - return string.Format("CAST({0} AS {1})", base.GetDbColumn(it,FormatValue(it.Value)), dbType); + if (IsMySqlModel()) + { + if (dbType == "numeric") + { + dbType = "numeric(18,6)"; + } + } + if (IsSqlServerModel()) + { + if (dbType == "varchar") + { + dbType = "varchar(max)"; + } + else if (dbType == "nvarchar") + { + dbType = "nvarchar(max)"; + } + else if (dbType == "char") + { + dbType = "char(8000)"; + } + else if (dbType == "nchar") + { + dbType = "nchar(4000)"; + } + } + return string.Format("CAST({0} AS {1})", base.GetDbColumn(it, FormatValue(it.Value)), dbType); })) + ")"); ++i; @@ -186,6 +214,16 @@ namespace SqlSugar return batchUpdateSql.ToString(); } + private bool IsSqlServerModel() + { + return this.Context?.CurrentConnectionConfig?.MoreSettings?.DatabaseModel == DbType.SqlServer; + } + + private bool IsMySqlModel() + { + return this.Context?.CurrentConnectionConfig?.MoreSettings?.DatabaseModel == DbType.MySql; + } + private StringBuilder GetBatchUpdateSql(StringBuilder batchUpdateSql) { if (ReSetValueBySqlExpListType == null && ReSetValueBySqlExpList != null)