From 39e4d1b22a902990637c8581459e3b6e03901d33 Mon Sep 17 00:00:00 2001 From: sunkaixuan <610262374@qq.com> Date: Thu, 24 Nov 2022 14:22:58 +0800 Subject: [PATCH] Update exp to sql --- .../ExpressionsToSql/Common/SugarParameter.cs | 4 +++ .../PostgreSQL/PostgreSQLProvider.cs | 29 +++++++++++++++---- 2 files changed, 28 insertions(+), 5 deletions(-) diff --git a/Src/Asp.Net/SqlSugar/ExpressionsToSql/Common/SugarParameter.cs b/Src/Asp.Net/SqlSugar/ExpressionsToSql/Common/SugarParameter.cs index f0518e03d..639384c88 100644 --- a/Src/Asp.Net/SqlSugar/ExpressionsToSql/Common/SugarParameter.cs +++ b/Src/Asp.Net/SqlSugar/ExpressionsToSql/Common/SugarParameter.cs @@ -154,6 +154,10 @@ namespace SqlSugar { this.DbType = System.Data.DbType.UInt64; } + else if (type == UtilConstants.UShortType) + { + this.DbType = System.Data.DbType.UInt16; + } else if (type == UtilConstants.ShortType) { this.DbType = System.Data.DbType.UInt16; diff --git a/Src/Asp.Net/SqlSugar/Realization/PostgreSQL/PostgreSQLProvider.cs b/Src/Asp.Net/SqlSugar/Realization/PostgreSQL/PostgreSQLProvider.cs index 8beecd478..7fbe308de 100644 --- a/Src/Asp.Net/SqlSugar/Realization/PostgreSQL/PostgreSQLProvider.cs +++ b/Src/Asp.Net/SqlSugar/Realization/PostgreSQL/PostgreSQLProvider.cs @@ -90,11 +90,12 @@ namespace SqlSugar foreach (var parameter in parameters) { if (parameter.Value == null) parameter.Value = DBNull.Value; - if(parameter.Value is System.Data.SqlTypes.SqlDateTime&¶meter.DbType==System.Data.DbType.AnsiString) + if (parameter.Value is System.Data.SqlTypes.SqlDateTime && parameter.DbType == System.Data.DbType.AnsiString) { parameter.DbType = System.Data.DbType.DateTime; parameter.Value = DBNull.Value; } + UNumber(parameter); var sqlParameter = new NpgsqlParameter(); sqlParameter.ParameterName = parameter.ParameterName; sqlParameter.Size = parameter.Size; @@ -113,7 +114,7 @@ namespace SqlSugar { sqlParameter.NpgsqlDbType = ArrayMapping[type] | NpgsqlDbType.Array; } - else if (type==DBNull.Value.GetType()) + else if (type == DBNull.Value.GetType()) { if (parameter.DbType.IsIn(System.Data.DbType.Int32)) { @@ -127,9 +128,9 @@ namespace SqlSugar { sqlParameter.NpgsqlDbType = NpgsqlDbType.Bigint | NpgsqlDbType.Array; } - else + else { - sqlParameter.NpgsqlDbType =NpgsqlDbType.Text | NpgsqlDbType.Array; + sqlParameter.NpgsqlDbType = NpgsqlDbType.Text | NpgsqlDbType.Array; } } @@ -153,7 +154,7 @@ namespace SqlSugar { sqlParameter.DbType = System.Data.DbType.AnsiString; } - else if (sqlParameter.Value is DateTime && sqlParameter.DbType == System.Data.DbType.AnsiString) + else if (sqlParameter.Value is DateTime && sqlParameter.DbType == System.Data.DbType.AnsiString) { sqlParameter.DbType = System.Data.DbType.DateTime; } @@ -162,6 +163,24 @@ namespace SqlSugar return result; } + private static void UNumber(SugarParameter parameter) + { + if (parameter.DbType == System.Data.DbType.UInt16) + { + parameter.DbType = System.Data.DbType.Int16; + parameter.Value = Convert.ToInt16(parameter.Value); + } + else if (parameter.DbType == System.Data.DbType.UInt32) + { + parameter.DbType = System.Data.DbType.Int32; + parameter.Value = Convert.ToInt32(parameter.Value); + } + else if (parameter.DbType == System.Data.DbType.UInt64) + { + parameter.DbType = System.Data.DbType.Int64; + parameter.Value = Convert.ToInt64(parameter.Value); + } + } static readonly Dictionary ArrayMapping = new Dictionary() {