代码之家  ›  专栏  ›  技术社区  ›  Achilles

.NET框架中是否支持将.NET数据类型映射到相应的sqldbtype?

  •  3
  • Achilles  · 技术社区  · 15 年前

    我很好奇.NET框架中是否支持将.NET数据类型映射到相应的枚举sqldbtype,该枚举表示SQL中的数据类型。

    例如:

    dim mySqlDbType as SqlDbType = SomeFunction(GetType(myObject))
    
    2 回复  |  直到 15 年前
        1
  •  7
  •   Sam Harwell    15 年前
        2
  •  1
  •   Axl    15 年前

    任何开源代码生成工具或O/RM都应该有一个字典或函数来从sqldbtype映射到.NET类型并返回。例如,来自 Data Tier Generator :

        internal static string GetCsType(Column column)
        {
            switch (column.Type.ToLower())
            {
                case "binary":
                    return "byte[]";
                case "bigint":
                    return "long";
                case "bit":
                    return "bool";
                case "char":
                    return "string";
                case "datetime":
                    return "DateTime";
                case "decimal":
                    return "decimal";
                case "float":
                    return "float";
                case "image":
                    return "byte[]";
                case "int":
                    return "int";
                case "money":
                    return "decimal";
                case "nchar":
                    return "string";
                case "ntext":
                    return "string";
                case "nvarchar":
                    return "string";
                case "numeric":
                    return "decimal";
                case "real":
                    return "decimal";
                case "smalldatetime":
                    return "DateTime";
                case "smallint":
                    return "short";
                case "smallmoney":
                    return "float";
                case "sql_variant":
                    return "byte[]";
                case "sysname":
                    return "string";
                case "text":
                    return "string";
                case "timestamp":
                    return "DateTime";
                case "tinyint":
                    return "byte";
                case "varbinary":
                    return "byte[]";
                case "varchar":
                    return "string";
                case "uniqueidentifier":
                    return "Guid";
                default:  // Unknow data type
                    throw (new Exception("Invalid SQL Server data type specified: " + column.Type));
            }
        }