2012-01-12 15 views
5

tengo el siguiente mapa que utilizo para convertir Transcurrirá tipos de SQL Server, los tipos SQLData, y los tipos de .NET:SQL Server para conversiones de tipos de .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)) 
    }; 

El primer parámetro de un SqlTypeConversionHolder es el nombre de el tipo de servidor sql. El segundo parámetro es el tipo .Net Sql. El tercero es el tipo .net.

Los que dicen This one may need work son de los que no estoy seguro. ¿Podría alguien proporcionar ayuda con respecto a cuáles serían las conversiones adecuadas? Al mirar en MSDN, parece que no tienen un tipo de conversión adecuado. Encuentro eso difícil de creer. Tiene que haber una forma de ir del tipo SQL Server al tipo .NET.

Respuesta

1

para añadir uno más para SQL 2008 de todos modos tabla convierte a DataTable

Doy un ejemplo de cómo utilizar este tipo aquí SQL Server stored procedure convert varchar to int

[Editar]

 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. 

Crédito a @RedFilter para esa

2

char no es el tipo de datos .NET correcto para un servidor SQL char. Debe convertirse a char[] o string, ya que un SQL char puede contener más de un carácter.

La referencia de Microsoft here está de acuerdo conmigo. Los otros parecen correctos.

+0

+1 goooood catch! – Jordan

Cuestiones relacionadas