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 :
Si vous jetez un œil dans le fichier machine.config de .NET en version 4.0, il n’y a presque plus rien :
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 :
Et ça marche bien… Du coup, on se demande bien comment. La réponse est trouvée avec un coup d’ILSpy :
Et oui : en dur dans le code !
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>