From 2dcd4ca48163e6b7ff2586b7dd038cb99f37d572 Mon Sep 17 00:00:00 2001 From: skx <610262374@qq.com> Date: Fri, 29 Jan 2021 20:36:52 +0800 Subject: [PATCH] PgSql CodeFirst alter column bug --- Src/Asp.Net/PgSqlTest/UnitTest/Main.cs | 6 ++--- Src/Asp.Net/PgSqlTest/UnitTest/UCodeFirst.cs | 17 ++++++++++++ .../DbMaintenance/PostgreSQLDbMaintenance.cs | 26 ++++++++++++++++++- 3 files changed, 45 insertions(+), 4 deletions(-) diff --git a/Src/Asp.Net/PgSqlTest/UnitTest/Main.cs b/Src/Asp.Net/PgSqlTest/UnitTest/Main.cs index 095aba739..8fb433967 100644 --- a/Src/Asp.Net/PgSqlTest/UnitTest/Main.cs +++ b/Src/Asp.Net/PgSqlTest/UnitTest/Main.cs @@ -38,9 +38,9 @@ namespace OrmTest Ado(); Queryable(); QueryableAsync(); - Thread(); - Thread2(); - Thread3(); + //Thread(); + //Thread2(); + //Thread3(); } } } diff --git a/Src/Asp.Net/PgSqlTest/UnitTest/UCodeFirst.cs b/Src/Asp.Net/PgSqlTest/UnitTest/UCodeFirst.cs index 099832be8..6540aecca 100644 --- a/Src/Asp.Net/PgSqlTest/UnitTest/UCodeFirst.cs +++ b/Src/Asp.Net/PgSqlTest/UnitTest/UCodeFirst.cs @@ -13,7 +13,24 @@ namespace OrmTest if (Db.DbMaintenance.IsAnyTable("UnitCodeTest1", false)) Db.DbMaintenance.DropTable("UnitCodeTest1"); Db.CodeFirst.InitTables(); + Db.CodeFirst.InitTables(); + Db.Insertable(new UnitCodeTest22()).ExecuteCommand(); + Db.DbMaintenance.TruncateTable(); + Db.CodeFirst.InitTables(); + Db.Insertable(new UnitCodeTest22() { id=1}).ExecuteCommand(); } + + public class UnitCodeTest22 { + [SqlSugar.SugarColumn(IsNullable =true)] + public decimal? id { get; set; } + } + [SqlSugar.SugarTable("UnitCodeTest22")] + public class UnitCodeTest3 + { + [SqlSugar.SugarColumn(IsNullable = false)] + public int id { get; set; } + } + public class UnitCodeTest1 { [SqlSugar.SugarColumn(IndexGroupNameList = new string[] { "group1" })] diff --git a/Src/Asp.Net/SqlSugar/Realization/PostgreSQL/DbMaintenance/PostgreSQLDbMaintenance.cs b/Src/Asp.Net/SqlSugar/Realization/PostgreSQL/DbMaintenance/PostgreSQLDbMaintenance.cs index 9c789d4d3..6c3f85a78 100644 --- a/Src/Asp.Net/SqlSugar/Realization/PostgreSQL/DbMaintenance/PostgreSQLDbMaintenance.cs +++ b/Src/Asp.Net/SqlSugar/Realization/PostgreSQL/DbMaintenance/PostgreSQLDbMaintenance.cs @@ -237,9 +237,33 @@ namespace SqlSugar return "serial"; } } - #endregion + #endregion #region Methods + public override bool UpdateColumn(string tableName, DbColumnInfo columnInfo) + { + tableName = this.SqlBuilder.GetTranslationTableName(tableName); + var columnName= this.SqlBuilder.GetTranslationColumnName(columnInfo.DbColumnName); + string sql = GetUpdateColumnSql(tableName, columnInfo); + this.Context.Ado.ExecuteCommand(sql); + var isnull = columnInfo.IsNullable?" SET NOT NULL ":" DROP NOT NULL "; + this.Context.Ado.ExecuteCommand(string.Format("alter table {0} alter {1} {2}",tableName,columnName, isnull)); + return true; + } + + protected override string GetUpdateColumnSql(string tableName, DbColumnInfo columnInfo) + { + string columnName = this.SqlBuilder.GetTranslationColumnName(columnInfo.DbColumnName); + tableName = this.SqlBuilder.GetTranslationTableName(tableName); + string dataSize = GetSize(columnInfo); + string dataType = columnInfo.DataType; + string nullType = ""; + string primaryKey = null; + string identity = null; + string result = string.Format(this.AlterColumnToTableSql, tableName, columnName, dataType, dataSize, nullType, primaryKey, identity); + return result; + } + /// ///by current connection string ///