2012-01-12 20 views
5

Ho la seguente mappa che uso per convertire betwen tipi di SQL Server, i tipi SQLData e tipi .NET:SQL Server per le conversioni di tipo 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)) 
    }; 

Il primo parametro di un SqlTypeConversionHolder è il nome di il tipo di server sql. Il secondo parametro è il tipo .Net Sql. Il terzo è il tipo .net.

Quelli che dicono This one may need work sono quelli di cui non sono sicuro. Qualcuno potrebbe fornire un aiuto su quali sarebbero le conversioni corrette? Guardando su MSDN, sembra che non abbiano un corretto tipo di conversione. Lo trovo difficile da credere. Deve esserci un modo per passare dal tipo di SQL Server al tipo .NET.

risposta

1

anche di aggiungere un altro per SQL 2008 in ogni caso tabella converte in DataTable

faccio un esempio di come utilizzare questo tipo qui SQL Server stored procedure convert varchar to int

[Edit]

 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. 

Credito a @RedFilter per quello

2

char non è il tipo di dati .NET corretto per un server SQL char. Deve essere convertito in char[] o string, poiché un SQL char può contenere più di un carattere.

Il riferimento Microsoft here è d'accordo con me. Gli altri sembrano corretti.

+0

+1 cattura goooood! – Jordan

Problemi correlati