SQL Server到.Net类型的转换 [英] SQL Server to .Net type conversions

查看:125
本文介绍了SQL Server到.Net类型的转换的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我具有以下映射,可用于在SQL Server类型,SQLData类型和.NET类型之间进行转换:

I have the following map that I use to convert betwen SQL Server types, SQLData types, and .NET types:

/// <summary>
    /// The map of types. THis maps all the corresponding types between sql server types, .net sql types, and .net types
    /// </summary>
    public static List<SqlTypeConversionHolder> TypeList = new List<SqlTypeConversionHolder>()
    {
        new SqlTypeConversionHolder("bigint", typeof(SqlInt64),typeof(Int64)),
        new SqlTypeConversionHolder("binary", typeof(SqlBytes),typeof(Byte[])),
        new SqlTypeConversionHolder("bit", typeof(SqlBoolean),typeof(Boolean)),
        new SqlTypeConversionHolder("char", typeof(SqlChars),typeof(char)), //this one may need work
        new SqlTypeConversionHolder("cursor", null,null),
        new SqlTypeConversionHolder("date", typeof(SqlDateTime),typeof(DateTime)),
        new SqlTypeConversionHolder("datetime", typeof(SqlDateTime),typeof(DateTime)),
        new SqlTypeConversionHolder("datetime2", null,typeof(DateTime)),
        new SqlTypeConversionHolder("DATETIMEOFFSET", null,typeof(DateTimeOffset)),
        new SqlTypeConversionHolder("decimal", typeof(SqlDecimal),typeof(Decimal)),
        new SqlTypeConversionHolder("float", typeof(SqlDouble),typeof(Double)),
        //new SqlTypeConversionHolder("geography", typeof(SqlGeography),typeof(null));
        //new SqlTypeConversionHolder("geometry", typeof(SqlGeometry),typeof(null));
        //new SqlTypeConversionHolder("hierarchyid", typeof(SqlHierarchyId),typeof(null));
        new SqlTypeConversionHolder("image", null,null),
        new SqlTypeConversionHolder("int", typeof(SqlInt32),typeof(Int32)),
        new SqlTypeConversionHolder("money", typeof(SqlMoney),typeof(Decimal)),
        new SqlTypeConversionHolder("nchar", typeof(SqlChars),typeof(String)),
        new SqlTypeConversionHolder("ntext", null,null),
        new SqlTypeConversionHolder("numeric", typeof(SqlDecimal),typeof(Decimal)),
        new SqlTypeConversionHolder("nvarchar", typeof(SqlChars),typeof(String)),
        new SqlTypeConversionHolder("nvarchar(1)", typeof(SqlChars),typeof(Char)),
        new SqlTypeConversionHolder("nchar(1)", typeof(SqlChars),typeof(Char)),
        new SqlTypeConversionHolder("real", typeof(SqlSingle),typeof(Single)),
        new SqlTypeConversionHolder("rowversion", null,typeof(Byte[])),
        new SqlTypeConversionHolder("smallint", typeof(SqlInt16),typeof(Int16)),
        new SqlTypeConversionHolder("smallmoney", typeof(SqlMoney),typeof(Decimal)),
        new SqlTypeConversionHolder("sql_variant", null,typeof(Object)),
        new SqlTypeConversionHolder("table", null,null),
        new SqlTypeConversionHolder("text", typeof(SqlString),typeof(string)), //this one may need work
        new SqlTypeConversionHolder("time", null,typeof(TimeSpan)),
        new SqlTypeConversionHolder("timestamp", null,null),
        new SqlTypeConversionHolder("tinyint", typeof(SqlByte),typeof(Byte)),
        new SqlTypeConversionHolder("uniqueidentifier", typeof(SqlGuid),typeof(Guid)),
        new SqlTypeConversionHolder("varbinary", typeof(SqlBytes),typeof(Byte[])),
        new SqlTypeConversionHolder("varbinary(1)", typeof(SqlBytes),typeof(byte)),
        new SqlTypeConversionHolder("binary(1)", typeof(SqlBytes),typeof(byte)),
        new SqlTypeConversionHolder("varchar", typeof(SqlString),typeof(string)), //this one may need work
        new SqlTypeConversionHolder("xml", typeof(SqlXml),typeof(string))
    };

SqlTypeConversionHolder 的第一个参数是sql服务器类型的名称。第二个参数是.Net Sql类型。第三种是.net类型。

The first parameter of a SqlTypeConversionHolder is the name of the sql server type. The second parameter is the .Net Sql type. The third is the .net type.

那些说这可能需要工作的人是我不确定。有人可以提供有关正确转换的帮助吗?在MSDN上,似乎他们没有适当的转换类型。我觉得很难相信。从SQL Server类型到.NET类型必须有某种方法。

The ones that say This one may need work are the ones that I am not sure about. Could someone provide some help as to what the proper conversions would be? Looking on MSDN, it seems as if they dont have a proper conversion type. I find that hard to beleive. There has to be someone way to go from the SQL Server type to the .NET type.

推荐答案

对于SQL Server char ,char 不是正确的.NET数据类型。由于SQL char ,必须将其转换为 char [] string 。 code>可以容纳多个字符。

char is not the correct .NET data type for a SQL Server char. It must be converted to either char[] or string, since a SQL char can hold more than one character.

Microsoft参考此处与我同意。其他的看起来正确。

The Microsoft reference here agrees with me. The other ones look correct.

这篇关于SQL Server到.Net类型的转换的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆