From 33a5bf0766c9dfd43fe9b3b80bddaa542374e71d Mon Sep 17 00:00:00 2001 From: pofi Date: Fri, 17 Mar 2023 14:46:22 +0800 Subject: [PATCH] =?UTF-8?q?=E8=8E=B7=E5=8F=96pg=E5=88=97=E6=97=B6=E6=8C=89?= =?UTF-8?q?ordinal=E6=8E=92=E5=BA=8F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Configurations/ConnectionStrings.json | 4 +-- .../Manager/DataBase/DataBaseManager.cs | 33 +++++++++++++++++-- 2 files changed, 32 insertions(+), 5 deletions(-) diff --git a/apihost/Tnb.API.Entry/Configurations/ConnectionStrings.json b/apihost/Tnb.API.Entry/Configurations/ConnectionStrings.json index af10cd10..cb16c787 100644 --- a/apihost/Tnb.API.Entry/Configurations/ConnectionStrings.json +++ b/apihost/Tnb.API.Entry/Configurations/ConnectionStrings.json @@ -4,7 +4,7 @@ "DBName": "tnb_bas", "DBType": "PostgreSQL", //MySql;SqlServer;Oracle;PostgreSQL;Dm;Kdbndp;Sqlite; "Host": "localhost", - "Port": "9202", + "Port": "5432", "UserName": "totong", "Password": "IPANyxGSKxIXg0dBM", //SqlServer @@ -17,7 +17,7 @@ //"DefaultConnection": "Data Source=(DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=192.168.0.19)(PORT=1521))(CONNECT_DATA=(SERVER = DEDICATED)(SERVICE_NAME=JNPFCLOUD)));User Id=JNPFCLOUD;Password=JNPFCLOUD" //PostgreSQL //"DefaultConnection": "PORT=5432;DATABASE=java_boot_dev_postgresql;HOST=192.168.0.103;PASSWORD=123456;USER ID=postgres" - "DefaultConnection": "server=localhost;port=9202;database=tnb_bas;uid=totong;pwd=IPANyxGSKxIXg0dBM;pooling=true;" + "DefaultConnection": "server=localhost;port=5432;database=tnb_bas;uid=totong;pwd=IPANyxGSKxIXg0dBM;pooling=true;" //MySql //"DefaultConnection": "server=192.168.0.10;Database=netcore_test;Uid=netcore_test;Pwd=jhpGB3A88CF57fBC;AllowLoadLocalInfile=true" } diff --git a/common/Tnb.Common.Core/Manager/DataBase/DataBaseManager.cs b/common/Tnb.Common.Core/Manager/DataBase/DataBaseManager.cs index 6a15b628..02f79cba 100644 --- a/common/Tnb.Common.Core/Manager/DataBase/DataBaseManager.cs +++ b/common/Tnb.Common.Core/Manager/DataBase/DataBaseManager.cs @@ -361,8 +361,34 @@ public class DataBaseManager : IDataBaseManager, ITransient { if (link != null && _sqlSugarClient.CurrentConnectionConfig.ConfigId != link.Id) _sqlSugarClient = ChangeDataBase(link); - var list = _sqlSugarClient.DbMaintenance.GetColumnInfosByTableName(tableName, false); - return list.Adapt>(); + List list; + if (link.DbType == SqlSugar.DbType.PostgreSQL.ToString()) + { + var sql = @"SELECT pcolumn.table_name AS tableName,pcolumn.column_name AS field,pcolumn.udt_name AS dataType, +pcolumn.column_default as defaults,col_description(pclass.oid, pcolumn.ordinal_position) AS fieldName, +CASE WHEN pcolumn.numeric_scale>0 THEN pcolumn.numeric_precision ELSE COALESCE(pcolumn.character_maximum_length,0) END AS dataLength, +CASE WHEN pcolumn.is_nullable = 'YES' THEN 1 ELSE 0 END AS allowNull, +CASE WHEN pcolumn.column_default LIKE 'nextval%' THEN true ELSE false END AS identity, +CASE WHEN pkey.colname = pcolumn.column_name THEN true ELSE false END AS primaryKey +FROM information_schema.columns pcolumn +INNER JOIN pg_class pclass ON pcolumn.table_name = pclass.relname +LEFT JOIN ( + SELECT pg_class.relname,pg_attribute.attname AS colname FROM + pg_constraint INNER JOIN pg_class + ON pg_constraint.conrelid = pg_class.oid + INNER JOIN pg_attribute ON pg_attribute.attrelid = pg_class.oid + and pg_attribute.attnum = pg_constraint.conkey[1] + INNER JOIN pg_type ON pg_type.oid = pg_attribute.atttypid + where pg_constraint.contype='p' +) pkey ON pcolumn.table_name = pkey.relname +WHERE pcolumn.table_name='{0}' ORDER BY ordinal_position"; + list = _sqlSugarClient.SqlQueryable(string.Format(sql, tableName)).ToList(); + } + else + { + list = _sqlSugarClient.DbMaintenance.GetColumnInfosByTableName(tableName, false).Adapt>(); + } + return list; } /// @@ -435,7 +461,8 @@ public class DataBaseManager : IDataBaseManager, ITransient var data = new DatabaseTableInfoOutput() { tableInfo = _sqlSugarClient.DbMaintenance.GetTableInfoList(false).Find(m => m.Name == tableName).Adapt(), - tableFieldList = _sqlSugarClient.DbMaintenance.GetColumnInfosByTableName(tableName, false).Adapt>() + tableFieldList = GetFieldList(link, tableName).Adapt>() + //tableFieldList = _sqlSugarClient.DbMaintenance.GetColumnInfosByTableName(tableName, false).Adapt>() }; data.tableFieldList = ViewDataTypeConversion(data.tableFieldList, _sqlSugarClient.CurrentConnectionConfig.DbType);