Do Entity Framework提供将DB类型转换为C#类型的实用程序?

前端之家收集整理的这篇文章主要介绍了Do Entity Framework提供将DB类型转换为C#类型的实用程序?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我正在使用反射和类型构建器构建动态类,所有,我想知道如何直接类型转换为c#类型

目前我正在做这种方式,但EF提供这种东西吗?

case "uniqueidentifier":
                return typeof(Guid);
            case "bit":
                return typeof(Boolean);
            case "nvarchar":
                return (typeof(string));
            case "datetime":
                return typeof(DateTime);
            case "float":
                return typeof(double);
            case "int":
                return (typeof(int));

谢谢

UPDATE
我认为到目前为止EF没有提供实用程序可以公开访问.接受的答案与Ef无关.那里有不同的图书馆.

RyszardDżegan已给出答案,但不能在TT模板或edmx之外使用(或者我可能不知道)

解决方法

我不知道这样的公共方法(我认为没有…它可能被接受为答案)

但是,尝试重新编译sqlMetal.exe,您可以很好地了解内部如何实现默认关联:

在类LinqTosqlShared.Utility.DbTypeSystem(内部类)中,您可以找到以下方法

internal static Type GetClosestRuntimeType(sqlDbType sqlDbType)
{
switch (sqlDbType)
{
    case sqlDbType.BigInt:
        return typeof(long);

    case sqlDbType.Binary:
    case sqlDbType.Image:
    case sqlDbType.Timestamp:
    case sqlDbType.VarBinary:
        return typeof(Binary);

    case sqlDbType.Bit:
        return typeof(bool);

    case sqlDbType.Char:
    case sqlDbType.NChar:
    case sqlDbType.NText:
    case sqlDbType.NVarChar:
    case sqlDbType.Text:
    case sqlDbType.VarChar:
        return typeof(string);

    case sqlDbType.DateTime:
    case sqlDbType.SmallDateTime:
    case sqlDbType.Date:
    case sqlDbType.DateTime2:
        return typeof(DateTime);

    case sqlDbType.Decimal:
    case sqlDbType.Money:
    case sqlDbType.SmallMoney:
        return typeof(decimal);

    case sqlDbType.Float:
        return typeof(double);

    case sqlDbType.Int:
        return typeof(int);

    case sqlDbType.Real:
        return typeof(float);

    case sqlDbType.UniqueIdentifier:
        return typeof(Guid);

    case sqlDbType.SmallInt:
        return typeof(short);

    case sqlDbType.TinyInt:
        return typeof(byte);

    case sqlDbType.Xml:
        return typeof(XElement);

    case sqlDbType.Time:
        return typeof(TimeSpan);

    case sqlDbType.DateTimeOffset:
        return typeof(DateTimeOffset);
}
return typeof(object);
}

编辑:

>见this作为参考>在同一个类中还有一个静态sqlDbType Parse(string stype)方法,它从sql类型字符串定义返回一个枚举sqlDbType.

猜你在找的C#相关文章