From 428b6129bdc4bc2d95c1f0849aef8adcb8dd1de5 Mon Sep 17 00:00:00 2001 From: sunkaixuan <610262374@qq.com> Date: Wed, 27 Mar 2024 15:00:41 +0800 Subject: [PATCH] Synchronization code --- .../Abstract/SugarProvider/SqlSugarAccessory.cs | 10 ++++++++-- .../Common/MethodCallExpressionModel.cs | 1 + .../MethodCallExpressionResolve_Helper.cs | 3 ++- .../SqlBuilder/PostgreSQLExpressionContext.cs | 14 ++++++++++++++ 4 files changed, 25 insertions(+), 3 deletions(-) diff --git a/Src/Asp.Net/SqlSugar/Abstract/SugarProvider/SqlSugarAccessory.cs b/Src/Asp.Net/SqlSugar/Abstract/SugarProvider/SqlSugarAccessory.cs index 1b41e1009..3dae5e3a7 100644 --- a/Src/Asp.Net/SqlSugar/Abstract/SugarProvider/SqlSugarAccessory.cs +++ b/Src/Asp.Net/SqlSugar/Abstract/SugarProvider/SqlSugarAccessory.cs @@ -440,7 +440,10 @@ namespace SqlSugar DependencyManagement.TryPostgreSQL(); break; case DbType.OpenGauss: - config.DbType = DbType.PostgreSQL; + config.DbType = DbType.PostgreSQL; + if (this.CurrentConnectionConfig.MoreSettings == null) + this.CurrentConnectionConfig.MoreSettings = new ConnMoreSettings(); + this.CurrentConnectionConfig.MoreSettings.DatabaseModel = DbType.OpenGauss; break; case DbType.HG: InstanceFactory.CustomDllName = SugarCompatible.IsFramework ? throw new Exception("Only.NET CORE is supported") : "SqlSugar.HGCore"; @@ -489,7 +492,10 @@ namespace SqlSugar InstanceFactory.CustomDllName = SugarCompatible.IsFramework ? "SqlSugar.OceanBaseForOracle" : "SqlSugar.OceanBaseForOracleCore"; break; case DbType.GaussDB: - config.DbType = DbType.PostgreSQL; + config.DbType = DbType.PostgreSQL; + if (this.CurrentConnectionConfig.MoreSettings == null) + this.CurrentConnectionConfig.MoreSettings = new ConnMoreSettings(); + this.CurrentConnectionConfig.MoreSettings.DatabaseModel = DbType.GaussDB; break; case DbType.Vastbase: config.DbType = DbType.PostgreSQL; diff --git a/Src/Asp.Net/SqlSugar/ExpressionsToSql/Common/MethodCallExpressionModel.cs b/Src/Asp.Net/SqlSugar/ExpressionsToSql/Common/MethodCallExpressionModel.cs index 9bc06a4b5..093b4d39a 100644 --- a/Src/Asp.Net/SqlSugar/ExpressionsToSql/Common/MethodCallExpressionModel.cs +++ b/Src/Asp.Net/SqlSugar/ExpressionsToSql/Common/MethodCallExpressionModel.cs @@ -14,6 +14,7 @@ namespace SqlSugar public Expression Expression { get; set; } public Expression BaseExpression { get; set; } public List Parameters { get; set; } + public ExpressionContext Conext { get; set; } } public class MethodCallExpressionArgs diff --git a/Src/Asp.Net/SqlSugar/ExpressionsToSql/ResolveItems/MethodCallExpressionResolve_Helper.cs b/Src/Asp.Net/SqlSugar/ExpressionsToSql/ResolveItems/MethodCallExpressionResolve_Helper.cs index 4faf57b11..ce23060fd 100644 --- a/Src/Asp.Net/SqlSugar/ExpressionsToSql/ResolveItems/MethodCallExpressionResolve_Helper.cs +++ b/Src/Asp.Net/SqlSugar/ExpressionsToSql/ResolveItems/MethodCallExpressionResolve_Helper.cs @@ -662,7 +662,8 @@ namespace SqlSugar return this.Context.DbMehtods.HasNumber(model); case "HasValue": return this.Context.DbMehtods.HasValue(model); - case "IsNullOrEmpty": + case "IsNullOrEmpty": + model.Conext = this.Context; return this.Context.DbMehtods.IsNullOrEmpty(model); case "ToLower": return this.Context.DbMehtods.ToLower(model); diff --git a/Src/Asp.Net/SqlSugar/Realization/PostgreSQL/SqlBuilder/PostgreSQLExpressionContext.cs b/Src/Asp.Net/SqlSugar/Realization/PostgreSQL/SqlBuilder/PostgreSQLExpressionContext.cs index 71b6d0d8f..eec975182 100644 --- a/Src/Asp.Net/SqlSugar/Realization/PostgreSQL/SqlBuilder/PostgreSQLExpressionContext.cs +++ b/Src/Asp.Net/SqlSugar/Realization/PostgreSQL/SqlBuilder/PostgreSQLExpressionContext.cs @@ -373,6 +373,20 @@ namespace SqlSugar var parameter = model.Args[0]; return string.Format(" LENGTH({0})", parameter.MemberName); } + public override string IsNullOrEmpty(MethodCallExpressionModel model) + { + if (model.Conext?.SugarContext?.Context?.CurrentConnectionConfig?.MoreSettings?.DatabaseModel == DbType.OpenGauss || + model.Conext?.SugarContext?.Context?.CurrentConnectionConfig?.MoreSettings?.DatabaseModel == DbType.Vastbase|| + model.Conext?.SugarContext?.Context?.CurrentConnectionConfig?.MoreSettings?.DatabaseModel == DbType.GaussDB) + { + var parameter = model.Args[0]; + return string.Format("( {0} IS NULL )", parameter.MemberName); + } + else + { + return base.IsNullOrEmpty(model); + } + } public override string MergeString(params string[] strings) { var key = Guid.NewGuid() + "";