是否有一个类可以自动将.net框架类型转换为PostgreSQL类型?

本文关键字:类型转换 框架 PostgreSQL 类型 net 有一个 是否 | 更新日期: 2023-09-27 18:02:45

为了编写sql查询,我需要能够采用。net类型并获得PostgreSQL类型的字符串。例如,我需要从

typeof(int) --> "int"
这很棘手,因为typeof(int)是System.Int32。我发现了一些表,如这一个,但我想知道是否有一个类,自动做到这一点,而不是自己编写所有的映射。

是否有一个类可以自动将.net框架类型转换为PostgreSQL类型?

也许可以:

public static class DotNetTypeToPostgreSqlType
{
    public static string GetPostgreType(object o)
    {
        if (o is Int64)
        {
            return "int8";
        }
        if (o is Boolean)
        {
            return "bool";
        }
        if (o is Byte[])
        {
            return "bytea";
        }
        if (o is DateTime)
        {
            return "date";
        }
        if (o is Double)
        {
            return "float8";
        }
        if (o is Int32)
        {
            return "int4";
        }
        if (o is Decimal)
        {
            return "money";
        }
        if (o is Decimal)
        {
            return "numeric";
        }
        if (o is Single)
        {
            return "float4";
        }
        if (o is Int16)
        {
            return "int2";
        }
        if (o is String)
        {
            return "text";
        }
        if (o is DateTime)
        {
            return "time";
        }
        if (o is DateTime)
        {
            return "timetz";
        }
        if (o is DateTime)
        {
            return "timestamp";
        }
        if (o is DateTime)
        {
            return "timestamptz";
        }
        if (o is TimeSpan)
        {
            return "interval";
        }
        if (o is String)
        {
            return "varchar";
        }
        if (o is IPAddress)
        {
            return "inet";
        }
        if (o is Boolean)
        {
            return "bit";
        }
        if (o is Guid)
        {
            return "uuid";
        }
        if (o is Array)
        {
            return "array";
        }
        throw new NotImplementedException("Unknown postgresql type");
    }
}