2009-07-23 4 views
3

Je suis curieux de savoir s'il existe un support dans .NET Framework pour mapper les types de données .NET à l'énumération correspondante SqlDbType qui représente le type de données dans SQL.Le .NET Framework prend-il en charge la correspondance entre les types de données .NET et leur SqlDBType correspondant?

Par exemple:

dim mySqlDbType as SqlDbType = SomeFunction(GetType(myObject)) 
+0

aussi une autre approche: http://www.codeproject.com/KB/vb/ConvToSqlDbType.aspx – Achilles

Répondre

1

Tout outil de génération de code open source ou O/RM doit avoir un dictionnaire ou une fonction pour mapper de SqlDbType vers .NET de type et de retour. Par exemple, à partir 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)); 
     } 
    } 
+0

Je n'aime pas cette approche parce qu'elle n'est pas à l'échelle. Que se passe-t-il lorsque Microsoft ajoute une autre valeur à SqlDbType? – Achilles

Questions connexes