【发布时间】:2012-02-08 22:56:33
【问题描述】:
我有以下映射,用于在 SQL Server 类型、SQLData 类型和 .NET 类型之间进行转换:
/// <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 server 类型的名称。第二个参数是 .Net Sql 类型。第三种是.net类型。
说This one may need work 的那些是我不确定的。有人可以就正确的转换提供一些帮助吗?在 MSDN 上查看,似乎他们没有正确的转换类型。我觉得这很难相信。从 SQL Server 类型到 .NET 类型必须有某种方法。
【问题讨论】:
标签: .net sql-server types sqldatatypes type-conversion