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;