Update sqlserver support default nvarchar

This commit is contained in:
sunkaixuan 2022-12-08 17:08:07 +08:00
parent 79283f466a
commit 7959a2e00a
4 changed files with 27 additions and 2 deletions

View File

@ -573,6 +573,10 @@ namespace SqlSugar
{
return false;
}
if (properyTypeName?.ToLower() == "varchar" && dataType?.ToLower() == "nvarchar")
{
return false;
}
if (properyTypeName?.ToLower() == "number" && dataType?.ToLower() == "decimal")
{
return false;

View File

@ -18,5 +18,6 @@ namespace SqlSugar
public bool? TableEnumIsString { get; set; }
public DateTime? DbMinDate { get; set; } = Convert.ToDateTime("1900-01-01");
public bool IsNoReadXmlDescription { get; set; }
public bool SqlServerCodeFirstNvarchar { get; set; }
}
}

View File

@ -321,6 +321,17 @@ namespace SqlSugar
#endregion
#region Methods
public override bool UpdateColumn(string tableName, DbColumnInfo column)
{
if (column.DataType != null && this.Context.CurrentConnectionConfig?.MoreSettings?.SqlServerCodeFirstNvarchar == true)
{
if (!column.DataType.ToLower().Contains("nvarchar"))
{
column.DataType = column.DataType.ToLower().Replace("varchar", "nvarchar");
}
}
return base.UpdateColumn(tableName, column);
}
public override bool IsAnyTable(string tableName, bool isCache = true)
{
if (tableName.Contains("."))
@ -536,6 +547,14 @@ namespace SqlSugar
item.DecimalDigits = 4;
item.Length = 18;
}
else if (item.DataType != null && this.Context.CurrentConnectionConfig?.MoreSettings?.SqlServerCodeFirstNvarchar == true)
{
if (!item.DataType.ToLower().Contains("nvarchar"))
{
item.DataType = item.DataType.ToLower().Replace("varchar", "nvarchar");
}
}
}
string sql = GetCreateTableSql(tableName, columns);
this.Context.Ado.ExecuteCommand(sql);

View File

@ -174,8 +174,9 @@ namespace SqlSugar
TableEnumIsString = it.MoreSettings.TableEnumIsString,
DisableMillisecond = it.MoreSettings.DisableMillisecond,
DbMinDate=it.MoreSettings.DbMinDate,
IsNoReadXmlDescription=it.MoreSettings.IsNoReadXmlDescription
IsNoReadXmlDescription=it.MoreSettings.IsNoReadXmlDescription,
SqlServerCodeFirstNvarchar=it.MoreSettings.SqlServerCodeFirstNvarchar
},
SqlMiddle = it.SqlMiddle == null ? null : new SqlMiddle
{