gpt4 book ai didi

c# - 将 Npgsql 文本类型转换为 C# 类型

转载 作者:行者123 更新时间:2023-11-29 11:44:51 24 4
gpt4 key购买 nike

我需要找到将 Npgsql 类型(以文本形式给出)转换为 C# 类型对象的方法。代码示例:

public Type ConvertFromNpgsqlType(string a_sNpglsqType)
{
//TODO
if (string.Equals(a_sNpglsqType, "integer")
{
return typeof(int);
}
//...
return typeof(object);
}

我有来自 pgsql 查询的“a_sNpgsqlType”参数值,其中我的值为:

   i integer, OUT pass text,(...)

一切都很简单...但我不知道如何将 Npgsql 字符串类型转换为 C# 类型对象最简单的方法是创建一个很长的“if else”,但在我看来这是解决它的最糟糕的方法:(

也许有人知道我该怎么做? :)

最佳答案

我希望有,但我怀疑没有。我有一个用于生成 POCO 的迷你 ORM,我使用映射结构来完成此操作——将 DbType 转换为它映射到的各种其他类型。这不会直接回答您的问题(因为我担心没有),但它确实会为我们回复邮件,我认为这与您试图解决的解决方案相同。

datatype                 system_enum                   csharp_dbtype   postgres_enum
bigint System.Data.DbType.Int64 Int64 NpgsqlTypes.NpgsqlDbType.Bigint
bit System.Data.DbType.Boolean Boolean NpgsqlTypes.NpgsqlDbType.Bit
bool System.Data.DbType.Boolean Boolean NpgsqlTypes.NpgsqlDbType.Boolean
boolean System.Data.DbType.Boolean Boolean NpgsqlTypes.NpgsqlDbType.Boolean
Box System.Data.DbType.Object Object NpgsqlTypes.NpgsqlDbType.Box
bpchar System.Data.DbType.String String NpgsqlTypes.NpgsqlDbType.Text
_bpchar System.Data.DbType.String[] String[] NpgsqlDbType.Array | NpgsqlDbType.Text
bytea System.Data.DbType.Binary Byte[] NpgsqlTypes.NpgsqlDbType.Bytea
character System.Data.DbType.String String NpgsqlTypes.NpgsqlDbType.Char
character varying System.Data.DbType.String String NpgsqlTypes.NpgsqlDbType.Varchar
Circle System.Data.DbType.Object Object NpgsqlTypes.NpgsqlDbType.Circle
date System.Data.DbType.DateTime DateTime NpgsqlTypes.NpgsqlDbType.Date
float4 System.Data.DbType.Single Single NpgsqlTypes.NpgsqlDbType.Real
float8 System.Data.DbType.Double Double NpgsqlTypes.NpgsqlDbType.Double
inet System.Data.DbType.Object IPAddress  NpgsqlTypes.NpgsqlDbType.Inet
_int2 System.Data.DbType.Int16[] Int16[] NpgsqlDbType.Array | NpgsqlDbType.SmallInt
int2 System.Data.DbType.Int16 Int16 NpgsqlTypes.NpgsqlDbType.Smallint
int4 System.Data.DbType.Int32 Int32 NpgsqlTypes.NpgsqlDbType.Integer
_int4 System.Data.DbType.Int32[] Int32[] NpgsqlDbType.Array | NpgsqlDbType.Integer
int8 System.Data.DbType.Int64 Int64 NpgsqlTypes.NpgsqlDbType.Bigint
_int8 System.Data.DbType.Int64[] Int64[] NpgsqlDbType.Array | NpgsqlDbType.BigInt
integer System.Data.DbType.Int32 Int32 NpgsqlTypes.NpgsqlDbType.Integer
interval System.Data.DbType.Object TimeSpan NpgsqlTypes.NpgsqlDbType.Interval
Line System.Data.DbType.Object Object NpgsqlTypes.NpgsqlDbType.Line
LSeg System.Data.DbType.Object Object NpgsqlTypes.NpgsqlDbType.LSeg
money System.Data.DbType.Decimal Decimal NpgsqlTypes.NpgsqlDbType.Money
name System.Data.DbType.String String NpgsqlTypes.NpgsqlDbType.Name
numeric System.Data.DbType.Decimal Decimal NpgsqlTypes.NpgsqlDbType.Numeric
oid System.Data.DbType.UInt32 uint NpgsqlTypes.NpgsqlDbType.Oid
Path System.Data.DbType.Object Object NpgsqlTypes.NpgsqlDbType.Path
Point System.Data.DbType.Object Object NpgsqlTypes.NpgsqlDbType.Point
Polygon System.Data.DbType.Object Object NpgsqlTypes.NpgsqlDbType.Polygon
public.citext System.Data.DbType.String String NpgsqlTypes.NpgsqlDbType.Text
smallint System.Data.DbType.Int16 Int16 NpgsqlTypes.NpgsqlDbType.Smallint
_text System.Data.DbType.String[] String[] NpgsqlDbType.Array | NpgsqlDbType.Text
text System.Data.DbType.String String NpgsqlTypes.NpgsqlDbType.Text
time System.Data.DbType.Time DateTime NpgsqlTypes.NpgsqlDbType.Time
_timestamp System.Data.DbType.DateTime[] DateTime[] NpgsqlDbType.Array | NpgsqlDbType.Timestamp
timestamp System.Data.DbType.DateTime DateTime NpgsqlTypes.NpgsqlDbType.Timestamp
timestamptz System.Data.DbType.DateTime DateTime NpgsqlTypes.NpgsqlDbType.TimestampTZ
timestamp with time zone System.Data.DbType.DateTime DateTime NpgsqlTypes.NpgsqlDbType.TimestampTz
timetz System.Data.DbType.Time DateTime NpgsqlTypes.NpgsqlDbType.Time
unknown System.Data.DbType.String String NpgsqlTypes.NpgsqlDbType.Text
uuid System.Data.DbType.Guid Guid NpgsqlTypes.NpgsqlDbType.Uuid
varchar System.Data.DbType.String String NpgsqlTypes.NpgsqlDbType.Varchar
_varchar System.Data.DbType.String[] String[] NpgsqlDbType.Array | NpgsqlDbType.Varchar
xid System.Data.DbType.UInt32 uint NpgsqlTypes.NpgsqlDbType.Xid
xml System.Data.DbType.Xml Xml.XmlDocument NpgsqlTypes.NpgsqlDbType.Xml

这绝不是全面的,但当我们找到一个我们以前没有见过的 dbtype 时,我们只需将其添加到 map 中。

“数据类型”列是 NpgsqlDataReader.GetDataTypeName(i) 的结果。

关于c# - 将 Npgsql 文本类型转换为 C# 类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40900677/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com