Providers ADO.NET par défaut absents du machine.config en .NET 4.0 !

Si vous utilisez le mode multi-providers dans ADO.NET depuis la version 2.0, vous saviez certainement que les providers devaient être déclarés dans le machine.config.

Du coup, on voyait traditionnellement ceci dans le machine.config :

image

Si vous jetez un œil dans le fichier machine.config de .NET en version 4.0, il n’y a presque plus rien :

image

Juste le provider pour SQL Server Compact !

Et pourtant, vous pouvez tout de même utiliser le provider de SQL Server, avec ce genre de chaine de connexion dans le fichier de configuration de votre application :

image

Et ça marche bien… Du coup, on se demande bien comment. La réponse est trouvée avec un coup d’ILSpy :

image

Et oui : en dur dans le code !

image

Y compris celui d’Oracle alors que le provider ADO.NET est marqué comme obsolète. Sur les forums de Microsoft (http://social.msdn.microsoft.com/Forums/en-ZA/adodotnetdataproviders/thread/d79129c4-ae05-4c45-8997-bd90f5765a3a), DbProviderFactories est supposé les charger dynamiquement. Mouais…

<citation mode=’Desproges’>Etonnant, non ?</citation>

About JP Gouigoux

Jean-Philippe Gouigoux est Architecte Logiciel, MVP Connected Systems Developer. Il intervient régulièrement à l'Université de Bretagne Sud ainsi qu'à l'Agile Tour. Plus de détails sur la page "Curriculum Vitae" de ce blog.
This entry was posted in .NET, Debogage. Bookmark the permalink.

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *

Captcha Captcha Reload