From c6a3ca6d2f7698a920f136d0fc4ac03cfeb0ad6d Mon Sep 17 00:00:00 2001 From: 2881099 <2881099@qq.com> Date: Fri, 24 Feb 2023 21:53:06 +0800 Subject: [PATCH] =?UTF-8?q?-=20=E4=BC=98=E5=8C=96=20pgsql15.0=20=E9=83=A8?= =?UTF-8?q?=E5=88=86=E7=B1=BB=E5=9E=8B=E5=85=BC=E5=AE=B9=EF=BC=9B#1436?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../PostgreSQL/CustomPostgreSQLCodeFirst.cs | 12 ++++++++++++ .../PostgreSQL/CustomPostgreSQLDbFirst.cs | 6 ++++++ .../PostgreSQL/OdbcPostgreSQLCodeFirst.cs | 12 ++++++++++++ .../PostgreSQL/OdbcPostgreSQLDbFirst.cs | 6 ++++++ .../PostgreSQLCodeFirst.cs | 14 +++++++++++++- .../PostgreSQLDbFirst.cs | 6 ++++++ 6 files changed, 55 insertions(+), 1 deletion(-) diff --git a/Providers/FreeSql.Provider.Custom/PostgreSQL/CustomPostgreSQLCodeFirst.cs b/Providers/FreeSql.Provider.Custom/PostgreSQL/CustomPostgreSQLCodeFirst.cs index b39d7f44..2ad1a5d9 100644 --- a/Providers/FreeSql.Provider.Custom/PostgreSQL/CustomPostgreSQLCodeFirst.cs +++ b/Providers/FreeSql.Provider.Custom/PostgreSQL/CustomPostgreSQLCodeFirst.cs @@ -219,6 +219,18 @@ where ns.nspname = {{0}} and c.relname = {{1}}", tboldname ?? tbname); var type = string.Concat(a[1]); var sqlType = string.Concat(a[3]); var max_length = long.Parse(string.Concat(a[2])); + type = type.Replace("smallint", "int2") + .Replace("integer", "int4") + .Replace("bigint", "int8") + .Replace("real", "float4") + .Replace("double precision", "float8") + .Replace("character varying", "varchar"); //pg15+ + sqlType = type.Replace("smallint", "int2") + .Replace("integer", "int4") + .Replace("bigint", "int8") + .Replace("real", "float4") + .Replace("double precision", "float8") + .Replace("character varying", "varchar"); //pg15+ switch (sqlType.ToLower()) { case "bool": case "name": case "bit": case "varbit": case "bpchar": case "varchar": case "bytea": case "text": case "uuid": break; diff --git a/Providers/FreeSql.Provider.Custom/PostgreSQL/CustomPostgreSQLDbFirst.cs b/Providers/FreeSql.Provider.Custom/PostgreSQL/CustomPostgreSQLDbFirst.cs index 30f11442..56c6a659 100644 --- a/Providers/FreeSql.Provider.Custom/PostgreSQL/CustomPostgreSQLDbFirst.cs +++ b/Providers/FreeSql.Provider.Custom/PostgreSQL/CustomPostgreSQLDbFirst.cs @@ -53,15 +53,21 @@ namespace FreeSql.Custom.PostgreSQL DbType ret = DbType.String; switch (dbtype?.ToLower().TrimStart('_')) { + case "smallint": case "int2": ret = DbType.Int16; break; + case "integer": case "int4": ret = DbType.Int32; break; + case "bigint": case "int8": ret = DbType.Int64; break; case "numeric": ret = DbType.Decimal; break; + case "real": case "float4": ret = DbType.Single; break; + case "double precision": case "float8": ret = DbType.Double; break; case "money": ret = DbType.Decimal; break; case "bpchar": ret = DbType.AnsiString; break; + case "character varying": case "varchar": ret = DbType.String; break; case "text": ret = DbType.String; break; diff --git a/Providers/FreeSql.Provider.Odbc/PostgreSQL/OdbcPostgreSQLCodeFirst.cs b/Providers/FreeSql.Provider.Odbc/PostgreSQL/OdbcPostgreSQLCodeFirst.cs index 3a52548f..12fd8a99 100644 --- a/Providers/FreeSql.Provider.Odbc/PostgreSQL/OdbcPostgreSQLCodeFirst.cs +++ b/Providers/FreeSql.Provider.Odbc/PostgreSQL/OdbcPostgreSQLCodeFirst.cs @@ -220,6 +220,18 @@ where ns.nspname = {{0}} and c.relname = {{1}}", tboldname ?? tbname); var type = string.Concat(a[1]); var sqlType = string.Concat(a[3]); var max_length = long.Parse(string.Concat(a[2])); + type = type.Replace("smallint", "int2") + .Replace("integer", "int4") + .Replace("bigint", "int8") + .Replace("real", "float4") + .Replace("double precision", "float8") + .Replace("character varying", "varchar"); //pg15+ + sqlType = type.Replace("smallint", "int2") + .Replace("integer", "int4") + .Replace("bigint", "int8") + .Replace("real", "float4") + .Replace("double precision", "float8") + .Replace("character varying", "varchar"); //pg15+ switch (sqlType.ToLower()) { case "bool": case "name": case "bit": case "varbit": case "bpchar": case "varchar": case "bytea": case "text": case "uuid": break; diff --git a/Providers/FreeSql.Provider.Odbc/PostgreSQL/OdbcPostgreSQLDbFirst.cs b/Providers/FreeSql.Provider.Odbc/PostgreSQL/OdbcPostgreSQLDbFirst.cs index db32d8d6..be5099ff 100644 --- a/Providers/FreeSql.Provider.Odbc/PostgreSQL/OdbcPostgreSQLDbFirst.cs +++ b/Providers/FreeSql.Provider.Odbc/PostgreSQL/OdbcPostgreSQLDbFirst.cs @@ -54,15 +54,21 @@ namespace FreeSql.Odbc.PostgreSQL OdbcType ret = OdbcType.VarChar; switch (dbtype?.ToLower().TrimStart('_')) { + case "smallint": case "int2": ret = OdbcType.SmallInt; break; + case "integer": case "int4": ret = OdbcType.Int; break; + case "bigint": case "int8": ret = OdbcType.BigInt; break; case "numeric": ret = OdbcType.Numeric; break; + case "real": case "float4": ret = OdbcType.Real; break; + case "double precision": case "float8": ret = OdbcType.Double; break; case "money": ret = OdbcType.Numeric; break; case "bpchar": ret = OdbcType.Char; break; + case "character varying": case "varchar": ret = OdbcType.VarChar; break; case "text": ret = OdbcType.Text; break; diff --git a/Providers/FreeSql.Provider.PostgreSQL/PostgreSQLCodeFirst.cs b/Providers/FreeSql.Provider.PostgreSQL/PostgreSQLCodeFirst.cs index afefcdc1..a626c718 100644 --- a/Providers/FreeSql.Provider.PostgreSQL/PostgreSQLCodeFirst.cs +++ b/Providers/FreeSql.Provider.PostgreSQL/PostgreSQLCodeFirst.cs @@ -269,9 +269,21 @@ where ns.nspname = {{0}} and c.relname = {{1}}", tboldname ?? tbname); var type = string.Concat(a[1]); var sqlType = string.Concat(a[3]); var max_length = long.Parse(string.Concat(a[2])); + type = type.Replace("smallint", "int2") + .Replace("integer", "int4") + .Replace("bigint", "int8") + .Replace("real", "float4") + .Replace("double precision", "float8") + .Replace("character varying", "varchar"); //pg15+ + sqlType = type.Replace("smallint", "int2") + .Replace("integer", "int4") + .Replace("bigint", "int8") + .Replace("real", "float4") + .Replace("double precision", "float8") + .Replace("character varying", "varchar"); //pg15+ switch (sqlType.ToLower()) { - case "bool": case "name": case "bit": case "varbit": case "bpchar": case "varchar": case "bytea": case "text": case "uuid": break; + case "bool": case "name": case "bit": case "varbit": case "bpchar": case "varchar": case "bytea": case "text": case "uuid": default: max_length *= 8; break; } if (type.StartsWith("_")) diff --git a/Providers/FreeSql.Provider.PostgreSQL/PostgreSQLDbFirst.cs b/Providers/FreeSql.Provider.PostgreSQL/PostgreSQLDbFirst.cs index 3d7ee3c0..61d5d88f 100644 --- a/Providers/FreeSql.Provider.PostgreSQL/PostgreSQLDbFirst.cs +++ b/Providers/FreeSql.Provider.PostgreSQL/PostgreSQLDbFirst.cs @@ -59,15 +59,21 @@ namespace FreeSql.PostgreSQL NpgsqlDbType ret = NpgsqlDbType.Unknown; switch (dbtype?.ToLower().TrimStart('_')) { + case "smallint": case "int2": ret = NpgsqlDbType.Smallint; break; + case "integer": case "int4": ret = NpgsqlDbType.Integer; break; + case "bigint": case "int8": ret = NpgsqlDbType.Bigint; break; case "numeric": ret = NpgsqlDbType.Numeric; break; + case "real": case "float4": ret = NpgsqlDbType.Real; break; + case "double precision": case "float8": ret = NpgsqlDbType.Double; break; case "money": ret = NpgsqlDbType.Money; break; case "bpchar": ret = NpgsqlDbType.Char; break; + case "character varying": case "varchar": ret = NpgsqlDbType.Varchar; break; case "text": ret = NpgsqlDbType.Text; break;