diff --git a/Src/Asp.NetCore2/SqlSugar/Realization/Dm/SqlBuilder/DmUpdateBuilder.cs b/Src/Asp.NetCore2/SqlSugar/Realization/Dm/SqlBuilder/DmUpdateBuilder.cs index 2322aa8a4..dde717320 100644 --- a/Src/Asp.NetCore2/SqlSugar/Realization/Dm/SqlBuilder/DmUpdateBuilder.cs +++ b/Src/Asp.NetCore2/SqlSugar/Realization/Dm/SqlBuilder/DmUpdateBuilder.cs @@ -37,7 +37,7 @@ namespace SqlSugar private string GetOracleUpdateColums(int i, DbColumnInfo m) { - return string.Format("\"{0}\"={1}", m.DbColumnName.ToUpper(IsUppper), FormatValue(i, m.DbColumnName, m.Value)); + return string.Format("\"{0}\"={1}", m.DbColumnName.ToUpper(IsUppper), base.GetDbColumn(m,FormatValue(i, m.DbColumnName, m.Value))); } public bool IsUppper { diff --git a/Src/Asp.NetCore2/SqlSugar/Realization/MySql/DbMaintenance/MySqlDbMaintenance.cs b/Src/Asp.NetCore2/SqlSugar/Realization/MySql/DbMaintenance/MySqlDbMaintenance.cs index 04bce68f0..f874a36e2 100644 --- a/Src/Asp.NetCore2/SqlSugar/Realization/MySql/DbMaintenance/MySqlDbMaintenance.cs +++ b/Src/Asp.NetCore2/SqlSugar/Realization/MySql/DbMaintenance/MySqlDbMaintenance.cs @@ -428,6 +428,48 @@ namespace SqlSugar return tableString; } + + public override bool AddColumn(string tableName, DbColumnInfo columnInfo) + { + tableName = this.SqlBuilder.GetTranslationTableName(tableName); + var isAddNotNUll = columnInfo.IsNullable == false && columnInfo.DefaultValue.HasValue(); + if (isAddNotNUll) + { + columnInfo = this.Context.Utilities.TranslateCopy(columnInfo); + columnInfo.IsNullable = true; + } + string sql = GetAddColumnSql(tableName, columnInfo); + if (sql != null && columnInfo.ColumnDescription.HasValue() &&!sql.ToLower().Contains("comment")) + { + sql = $"{sql}{" COMMENT '"+ columnInfo.ColumnDescription.ToSqlFilter()+ "' "}"; + } + this.Context.Ado.ExecuteCommand(sql); + if (isAddNotNUll) + { + var dtColums = this.Context.Queryable().AS(columnInfo.TableName).Where("1=2") + .Select(this.SqlBuilder.GetTranslationColumnName(columnInfo.DbColumnName)).ToDataTable().Columns.Cast(); + var dtColumInfo = dtColums.First(it => it.ColumnName.EqualCase(columnInfo.DbColumnName)); + var type = UtilMethods.GetUnderType(dtColumInfo.DataType); + var value = type == UtilConstants.StringType ? (object)"" : Activator.CreateInstance(type); + if (this.Context.CurrentConnectionConfig.DbType == DbType.Oracle) + { + value = columnInfo.DefaultValue; + if (value.Equals("")) + { + value = "empty"; + } + } + var dt = new Dictionary(); + dt.Add(columnInfo.DbColumnName, value); + this.Context.Updateable(dt) + .AS(tableName) + .Where($"{columnInfo.DbColumnName} is null ").ExecuteCommand(); + columnInfo.IsNullable = false; + UpdateColumn(tableName, columnInfo); + } + return true; + } + protected override string GetSize(DbColumnInfo item) { string dataSize = null; diff --git a/Src/Asp.NetCore2/SqlSugar/Realization/MySql/SqlBuilder/MySqlUpdateBuilder.cs b/Src/Asp.NetCore2/SqlSugar/Realization/MySql/SqlBuilder/MySqlUpdateBuilder.cs index b33c4b4e6..52ba8a269 100644 --- a/Src/Asp.NetCore2/SqlSugar/Realization/MySql/SqlBuilder/MySqlUpdateBuilder.cs +++ b/Src/Asp.NetCore2/SqlSugar/Realization/MySql/SqlBuilder/MySqlUpdateBuilder.cs @@ -59,7 +59,7 @@ namespace SqlSugar { updateTable.Append(SqlTemplateBatchUnion); } - updateTable.Append("\r\n SELECT " + string.Join(",", columns.Select(it => string.Format(SqlTemplateBatchSelect, FormatValue(it.Value,it.PropertyName),this.Builder.GetTranslationColumnName(it.DbColumnName))))); + updateTable.Append("\r\n SELECT " + string.Join(",", columns.Select(it => string.Format(SqlTemplateBatchSelect, base.GetDbColumn(it,FormatValue(it.Value,it.PropertyName)),this.Builder.GetTranslationColumnName(it.DbColumnName))))); ++i; } pageIndex++; diff --git a/Src/Asp.NetCore2/SqlSugar/Realization/Oracle/SqlBuilder/OracleUpdateBuilder.cs b/Src/Asp.NetCore2/SqlSugar/Realization/Oracle/SqlBuilder/OracleUpdateBuilder.cs index 7297f634e..2beabd28b 100644 --- a/Src/Asp.NetCore2/SqlSugar/Realization/Oracle/SqlBuilder/OracleUpdateBuilder.cs +++ b/Src/Asp.NetCore2/SqlSugar/Realization/Oracle/SqlBuilder/OracleUpdateBuilder.cs @@ -33,7 +33,7 @@ namespace SqlSugar private string GetOracleUpdateColums(DbColumnInfo m) { - return string.Format("\"{0}\"={1}", m.DbColumnName.ToUpper(IsUppper), FormatValue(m.Value,m.IsPrimarykey,m.PropertyName)); + return string.Format("\"{0}\"={1}", m.DbColumnName.ToUpper(IsUppper), base.GetDbColumn(m,FormatValue(m.Value,m.IsPrimarykey,m.PropertyName))); } int i = 0; public object FormatValue(object value,bool isPrimaryKey,string name) diff --git a/Src/Asp.NetCore2/SqlSugar/Realization/PostgreSQL/SqlBuilder/PostgreSQLUpdateBuilder.cs b/Src/Asp.NetCore2/SqlSugar/Realization/PostgreSQL/SqlBuilder/PostgreSQLUpdateBuilder.cs index f2aea0e1f..9c98baa96 100644 --- a/Src/Asp.NetCore2/SqlSugar/Realization/PostgreSQL/SqlBuilder/PostgreSQLUpdateBuilder.cs +++ b/Src/Asp.NetCore2/SqlSugar/Realization/PostgreSQL/SqlBuilder/PostgreSQLUpdateBuilder.cs @@ -168,7 +168,7 @@ namespace SqlSugar dbType = "varchar"; } } - return string.Format("CAST({0} AS {1})", FormatValue(it.Value,it.DbColumnName,i,it), dbType); + return string.Format("CAST({0} AS {1})", base.GetDbColumn(it,FormatValue(it.Value,it.DbColumnName,i,it)), dbType); })) + ")"); ++i; diff --git a/Src/Asp.NetCore2/SqlSugar/Realization/QuestDB/SqlBuilder/QuestDBUpdateBuilder.cs b/Src/Asp.NetCore2/SqlSugar/Realization/QuestDB/SqlBuilder/QuestDBUpdateBuilder.cs index f6476e6ec..5e3766115 100644 --- a/Src/Asp.NetCore2/SqlSugar/Realization/QuestDB/SqlBuilder/QuestDBUpdateBuilder.cs +++ b/Src/Asp.NetCore2/SqlSugar/Realization/QuestDB/SqlBuilder/QuestDBUpdateBuilder.cs @@ -33,7 +33,7 @@ namespace SqlSugar private string GetOracleUpdateColums(int i, DbColumnInfo m, bool iswhere) { - return string.Format(" \"{0}\"={1}", m.DbColumnName.ToUpper(), FormatValue(i, m.DbColumnName, m.Value, iswhere)); + return string.Format(" \"{0}\"={1}", m.DbColumnName.ToUpper(),base.GetDbColumn(m, FormatValue(i, m.DbColumnName, m.Value, iswhere))); } public object FormatValue(int i, string name, object value, bool iswhere) diff --git a/Src/Asp.NetCore2/SqlSugar/Realization/SqlServer/SqlBuilder/SqlServerUpdateBuilder.cs b/Src/Asp.NetCore2/SqlSugar/Realization/SqlServer/SqlBuilder/SqlServerUpdateBuilder.cs index fe7afb1d8..f8a51e124 100644 --- a/Src/Asp.NetCore2/SqlSugar/Realization/SqlServer/SqlBuilder/SqlServerUpdateBuilder.cs +++ b/Src/Asp.NetCore2/SqlSugar/Realization/SqlServer/SqlBuilder/SqlServerUpdateBuilder.cs @@ -42,7 +42,7 @@ namespace SqlSugar { updateTable.Append(SqlTemplateBatchUnion); } - updateTable.Append("\r\n SELECT " + string.Join(",", columns.Select(it => string.Format(base.SqlTemplateBatchSelect, GetValue(it), Builder.GetTranslationColumnName(it.DbColumnName))))); + updateTable.Append("\r\n SELECT " + string.Join(",", columns.Select(it => string.Format(base.SqlTemplateBatchSelect,base.GetDbColumn(it,GetValue(it)), Builder.GetTranslationColumnName(it.DbColumnName))))); ++i; } pageIndex++; diff --git a/Src/Asp.NetCore2/SqlSugar/Realization/Sqlite/SqlBuilder/SqliteUpdateBuilder.cs b/Src/Asp.NetCore2/SqlSugar/Realization/Sqlite/SqlBuilder/SqliteUpdateBuilder.cs index e81b25796..6b858ee6d 100644 --- a/Src/Asp.NetCore2/SqlSugar/Realization/Sqlite/SqlBuilder/SqliteUpdateBuilder.cs +++ b/Src/Asp.NetCore2/SqlSugar/Realization/Sqlite/SqlBuilder/SqliteUpdateBuilder.cs @@ -32,7 +32,7 @@ namespace SqlSugar private string GetOracleUpdateColums(int i,DbColumnInfo m,bool iswhere) { - return string.Format("\"{0}\"={1}", m.DbColumnName.ToUpper(), FormatValue(i,m.DbColumnName,m.Value,iswhere)); + return string.Format("\"{0}\"={1}", m.DbColumnName.ToUpper(),base.GetDbColumn(m, FormatValue(i,m.DbColumnName,m.Value,iswhere))); } public object FormatValue(int i,string name,object value,bool iswhere)