J'ai eu quelques retours sur l'article présentant les nouvelles fonctionnalités apportées par SQL Server 2008 (les TVP)

Une question est revenue assez fréquemment :

  • "Tu utilises ADO.NET 2.0 pour créer ton paramètre"
  • "L'ensemble des classes proviennent de System.Data"
  • "Donc on peut profiter de tout ça avec le framework 2.0 !!"

Alors.. oui .. mais non !

C'est vrai, dans le code tout indique que tout est exécuté depuis les classes du framework 2.0

Mais il faut savoir que certaines assemblys du framework 2.0 ont subis un léger "lifting" lors du passage au framework 3.5

Pour vérifier, il suffit de comparer les versions des assemblys. Prenons par exemple une machine XP SP2 avec le Fx 2.0 installé, et une machine VISTA avec Orcas :

  • XP Sp2 FX 2.0 : version de System.Data : 2.0.50727.42
  • Vista Fx 3.5 : version de System.Data : 2.0.50727.1378

Mais alors, qu'est ce qui ne marcherait pas dans le code de l'article TVP ?

Nous créons un paramètre, en lui affectant un type SqlDbTypes.Structured, qui est le "nouveau" type de donnée correspondant aux TVP. Pour mémoire :

SqlParameter param = new SqlParameter("@tmpContact", SqlDbType.Structured);

Nous allons juste pointer du doigt l'énumération SqlDbType. Voici les changements entre la version Fx2.0 et la version Fx2.0"sp1" :

Les différences notables :

  • Structured : Le nouveau type pour les TVP (vu dans l'article)
  • Date, Time, DateTime2, DateTimeOffset : L'ensemble des nouveaux types dates, pris en charge par Sql Server 2008. (Article in progress !)

Si vous voulez une liste plutôt exhaustive, je vous conseille de lire le blog de Scott Hanselman's , de Microsoft.

Un lien direct sur les changements au niveau core : API Changes