From d813696f56413135da0753b65dec238813ba535b Mon Sep 17 00:00:00 2001 From: sunkaixuan <610262374@qq.com> Date: Tue, 20 Feb 2024 21:01:24 +0800 Subject: [PATCH] Synchronization code --- .../SqlSugar/Entities/ConnMoreSettings.cs | 1 + .../DbMaintenance/KdbndpDbMaintenance.cs | 36 +++++++++++++++++++ Src/Asp.Net/SqlSugar/Utilities/UtilMethods.cs | 3 +- 3 files changed, 39 insertions(+), 1 deletion(-) diff --git a/Src/Asp.Net/SqlSugar/Entities/ConnMoreSettings.cs b/Src/Asp.Net/SqlSugar/Entities/ConnMoreSettings.cs index 89b4ff7b4..33a07ba04 100644 --- a/Src/Asp.Net/SqlSugar/Entities/ConnMoreSettings.cs +++ b/Src/Asp.Net/SqlSugar/Entities/ConnMoreSettings.cs @@ -32,5 +32,6 @@ namespace SqlSugar public bool IsCorrectErrorSqlParameterName { get; set; } public int MaxParameterNameLength { get; set; } public bool DisableQueryWhereColumnRemoveTrim { get; set; } + public DbType? DataBaseModel { get;set; } } } diff --git a/Src/Asp.Net/SqlSugar/Realization/Kdbndp/DbMaintenance/KdbndpDbMaintenance.cs b/Src/Asp.Net/SqlSugar/Realization/Kdbndp/DbMaintenance/KdbndpDbMaintenance.cs index ec9e2221a..86ef41cea 100644 --- a/Src/Asp.Net/SqlSugar/Realization/Kdbndp/DbMaintenance/KdbndpDbMaintenance.cs +++ b/Src/Asp.Net/SqlSugar/Realization/Kdbndp/DbMaintenance/KdbndpDbMaintenance.cs @@ -12,6 +12,10 @@ namespace SqlSugar { get { + if (IsPgModel()) + { + return "SELECT datname FROM pg_database"; + } return "SELECT datname FROM sys_database"; } } @@ -44,6 +48,12 @@ namespace SqlSugar where sys_constraint.contype='p' ) pkey on pcolumn.table_name = pkey.relname order by ptables.tablename"; + + + if (IsPgModel()) + { + sql = sql.Replace("sys_", "pg_"); + } return sql; } } @@ -51,6 +61,12 @@ namespace SqlSugar { get { + if (IsPgModel()) + { + return @"select cast(relname as varchar) as Name, + cast(obj_description(relfilenode,'pg_class') as varchar) as Description from pg_class c + where relkind = 'r' and c.oid > 16384 and c.relnamespace != 99 and c.relname not like '%pl_profiler_saved%' order by relname"; + } return @"select cast(relname as varchar) as Name, cast(obj_description(relfilenode,'sys_class') as varchar) as Description from sys_class c where relkind = 'r' and c.oid > 16384 and c.relnamespace != 99 and c.relname not like '%pl_profiler_saved%' order by relname"; @@ -60,6 +76,13 @@ namespace SqlSugar { get { + if (IsPgModel()) + { + return @"select cast(relname as varchar) as Name,cast(Description as varchar) from pg_description + join pg_class on pg_description.objoid = pg_class.oid + where objsubid = 0 and relname in (SELECT viewname from pg_views + WHERE schemaname ='public')"; + } return @"select cast(relname as varchar) as Name,cast(Description as varchar) from sys_description join sys_class on sys_description.objoid = sys_class.oid where objsubid = 0 and relname in (SELECT viewname from sys_views @@ -396,6 +419,15 @@ WHERE tgrelid = '" + tableName + "'::regclass"); IsAutoCloseConnection = true, ConnectionString = connection }); + if (newDb.Ado.IsValidConnection() == false) + { + newDb = new SqlSugarClient(new ConnectionConfig() + { + DbType = this.Context.CurrentConnectionConfig.DbType, + IsAutoCloseConnection = true, + ConnectionString = this.Context.CurrentConnectionConfig.ConnectionString.Replace(oldDatabaseName, "TEST") + }); + } if (!GetDataBaseList(newDb).Any(it => it.Equals(databaseName, StringComparison.CurrentCultureIgnoreCase))) { newDb.Ado.ExecuteCommand(string.Format(CreateDataBaseSql, this.SqlBuilder.SqlTranslationLeft+databaseName+this.SqlBuilder.SqlTranslationRight, databaseDirectory)); @@ -575,6 +607,10 @@ WHERE tgrelid = '" + tableName + "'::regclass"); x.DecimalDigits = 0; } } + private bool IsPgModel() + { + return this.Context.CurrentConnectionConfig?.MoreSettings?.DataBaseModel == DbType.PostgreSQL; + } #endregion } } diff --git a/Src/Asp.Net/SqlSugar/Utilities/UtilMethods.cs b/Src/Asp.Net/SqlSugar/Utilities/UtilMethods.cs index e71273133..5e1c451a8 100644 --- a/Src/Asp.Net/SqlSugar/Utilities/UtilMethods.cs +++ b/Src/Asp.Net/SqlSugar/Utilities/UtilMethods.cs @@ -593,7 +593,8 @@ namespace SqlSugar IsCorrectErrorSqlParameterName = it.MoreSettings.IsCorrectErrorSqlParameterName, SqliteCodeFirstEnableDropColumn=it.MoreSettings.SqliteCodeFirstEnableDropColumn, MaxParameterNameLength=it.MoreSettings.MaxParameterNameLength, - DisableQueryWhereColumnRemoveTrim=it.MoreSettings.DisableQueryWhereColumnRemoveTrim + DisableQueryWhereColumnRemoveTrim=it.MoreSettings.DisableQueryWhereColumnRemoveTrim, + DataBaseModel=it.MoreSettings.DataBaseModel }, SqlMiddle = it.SqlMiddle == null ? null : new SqlMiddle