diff --git a/Src/Asp.Net/PgSqlTest/UnitTest/UCodeFirst.cs b/Src/Asp.Net/PgSqlTest/UnitTest/UCodeFirst.cs index 883cabf11..02ac1b567 100644 --- a/Src/Asp.Net/PgSqlTest/UnitTest/UCodeFirst.cs +++ b/Src/Asp.Net/PgSqlTest/UnitTest/UCodeFirst.cs @@ -30,7 +30,24 @@ namespace OrmTest Db.Insertable(new List { new UnitDateOfTime22() { DateTimeOffset1 = DateTimeOffset.Now }, new UnitDateOfTime22() { DateTimeOffset1 = DateTimeOffset.Now } }).ExecuteCommand(); var list2 = Db.Queryable().ToList(); + Db.CodeFirst.InitTables(); + Db.CodeFirst.InitTables(); + Db.CodeFirst.InitTables(); } + + public class UnitTestPk + { + [SqlSugar.SugarColumn(IsPrimaryKey =true,IsIdentity =true)] + public int id { get; set; } + [SqlSugar.SugarColumn(IsPrimaryKey = true )] + public long id2 { get; set; } + [SqlSugar.SugarColumn(IsPrimaryKey = true )] + public Guid id3 { get; set; } + + public string Name { get; set; } + + } + [SqlSugar.SugarTable("UnitDateOfTime221")] public class UnitDateOfTime22 { diff --git a/Src/Asp.Net/SqlSugar/Realization/PostgreSQL/DbMaintenance/PostgreSQLDbMaintenance.cs b/Src/Asp.Net/SqlSugar/Realization/PostgreSQL/DbMaintenance/PostgreSQLDbMaintenance.cs index 497017d60..9b1119fe6 100644 --- a/Src/Asp.Net/SqlSugar/Realization/PostgreSQL/DbMaintenance/PostgreSQLDbMaintenance.cs +++ b/Src/Asp.Net/SqlSugar/Realization/PostgreSQL/DbMaintenance/PostgreSQLDbMaintenance.cs @@ -394,6 +394,34 @@ namespace SqlSugar if (result == null || result.Count() == 0) { result = base.GetColumnInfosByTableName(tableName, isCache); + } + try + { + string sql = $@"select + kcu.column_name as key_column + from information_schema.table_constraints tco + join information_schema.key_column_usage kcu + on kcu.constraint_name = tco.constraint_name + and kcu.constraint_schema = tco.constraint_schema + and kcu.constraint_name = tco.constraint_name + where tco.constraint_type = 'PRIMARY KEY' + and kcu.table_schema='public' and + upper(kcu.table_name)=upper('{tableName}')"; + var pkList = this.Context.Ado.SqlQuery(sql); + if (pkList.Count >1) + { + foreach (var item in result) + { + if (pkList.Select(it=>it.ToUpper()).Contains(item.DbColumnName.ToUpper())) + { + item.IsPrimarykey = true; + } + } + } + } + catch + { + } return result; }