Synchronization code

This commit is contained in:
sunkaixuan 2024-09-06 14:40:20 +08:00
parent 468e3cc649
commit c374a0675b
2 changed files with 43 additions and 4 deletions

View File

@ -1102,6 +1102,7 @@ namespace SqlSugar
sb.Append(" ) "); sb.Append(" ) ");
} }
var result = sb.ToString(); var result = sb.ToString();
result = result.Replace(" = null)", " is null)");
if (result.IsNullOrEmpty()) if (result.IsNullOrEmpty())
{ {
return " 1=2 "; return " 1=2 ";

View File

@ -132,7 +132,8 @@ namespace SqlSugar
{ {
var columnInfo = tableColumnList.FirstOrDefault(x => x.DbColumnName.Equals(it.DbColumnName, StringComparison.OrdinalIgnoreCase)); var columnInfo = tableColumnList.FirstOrDefault(x => x.DbColumnName.Equals(it.DbColumnName, StringComparison.OrdinalIgnoreCase));
var dbType = columnInfo?.DataType; var dbType = columnInfo?.DataType;
if (dbType == null) { if (dbType == null)
{
var typeName = it.PropertyType.Name.ToLower(); var typeName = it.PropertyType.Name.ToLower();
if (typeName == "int32") if (typeName == "int32")
typeName = "int"; typeName = "int";
@ -140,7 +141,7 @@ namespace SqlSugar
typeName = "long"; typeName = "long";
if (typeName == "int16") if (typeName == "int16")
typeName = "short"; typeName = "short";
if (typeName == "boolean") if (typeName == "boolean")
typeName = "bool"; typeName = "bool";
var isAnyType = PostgreSQLDbBind.MappingTypesConst.Where(x => x.Value.ToString().ToLower() == typeName).Any(); 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; dbType = PostgreSQLDbBind.MappingTypesConst.Where(x => x.Value.ToString().ToLower() == typeName).FirstOrDefault().Key;
} }
else { else
{
dbType = "varchar"; 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; ++i;
@ -186,6 +214,16 @@ namespace SqlSugar
return batchUpdateSql.ToString(); 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) private StringBuilder GetBatchUpdateSql(StringBuilder batchUpdateSql)
{ {
if (ReSetValueBySqlExpListType == null && ReSetValueBySqlExpList != null) if (ReSetValueBySqlExpListType == null && ReSetValueBySqlExpList != null)