Je sais qu'il y a eu beaucoup d'autres publications sur cette erreur mais aucune n'a pu m'éclairer ou m'aider à résoudre mon problème. J'utilise une connexion directe à SqlExpress, donc pas de bases de données spéciales Oracle ou MySQL ou autre. Il me semble que cela devrait me convenir parfaitement.
Le scénario est donc le suivant : j'ai créé une solution composée d'une poignée de projets : référentiels, données (EF5.0), utilitaires, un projet de test et une application Web MVC. L'objectif est d'accéder simplement à une base de données SQL Express sous-jacente via les classes Data par le biais de référentiels dans le projet Repositories en utilisant EF5 et quelques référentiels du projet de test et de l'application MVC.
Le projet de test fonctionne et est capable d'accéder et de mettre à jour la base de données sans aucun problème.
Cependant, le projet Web MVC génère le message "Impossible de trouver le fournisseur de données .Net Framework demandé. Il se peut qu'il ne soit pas installé", ce que je ne comprends pas car il utilise la même chaîne de connexion que le projet de test.
[ArgumentException: Unable to find the requested .Net Framework Data Provider. It may not be installed.]
System.Data.Common.DbProviderFactories.GetFactory(String providerInvariantName) +1426271
WebMatrix.Data.DbProviderFactoryWrapper.CreateConnection(String connectionString) +64
WebMatrix.Data.<>c__DisplayClass15.<OpenConnectionStringInternal>b__14() +16
WebMatrix.Data.Database.get_Connection() +19
WebMatrix.Data.Database.EnsureConnectionOpen() +12
WebMatrix.Data.Database.QueryValue(String commandText, Object[] args) +63
WebMatrix.WebData.DatabaseWrapper.QueryValue(String commandText, Object[] parameters) +14
WebMatrix.WebData.SimpleMembershipProvider.GetUserId(IDatabase db, String userTableName, String userNameColumn, String userIdColumn, String userName) +232
WebMatrix.WebData.SimpleMembershipProvider.ValidateUserTable() +85
J'ai...
- Enregistrer le System.Data.SqlClient dans le web.config.
- Vérifié que la version enregistrée (2.0.0.0) de System.Data existe dans le GAC par cet article
- Je me suis assuré qu'il n'y avait pas de fautes de frappe dans la chaîne de connexion.
Voici ce que j'ai dans le web.config ...
<connectionStrings>
<add name="DBCatalogContext"
connectionString="metadata=res://*/DBCatalog.csdl|
res://*/DBCatalog.ssdl|
res://*/DBCatalog.msl;
provider=System.Data.SqlClient;
provider connection string="data source=.\SQLEXPRESS;
initial catalog=DBCatalog;
integrated security=True;
multipleactiveresultsets=True;
App=EntityFramework""
providerName="System.Data.EntityClient" />
</connectionStrings>
<system.data>
<DbProviderFactories>
<add name="SqlClient Data Provider"
invariant="System.Data.SqlClient"
description=".Net Framework Data Provider for SqlServer"
type="System.Data.SqlClient.SqlClientFactory,
System.Data,
Version=2.0.0.0,
Culture=neutral, PublicKeyToken=b77a5c561934e089"/>
</DbProviderFactories>
</system.data>
La seule chose que je vois qui n'a pas de sens pour moi, c'est que lorsque je sélectionne la référence "System.Data" dans le dossier "References" et que je regarde les propriétés, il est indiqué que c'est la version 4.0.0.0, mais lorsque je change la version dans la section "DbProviderFactories" du site de configuration, j'obtiens toujours l'erreur. De plus, je ne vois même pas la référence à cette bibliothèque dans le projet Test qui fonctionne.
Je suis persuadé qu'il s'agit d'un oubli ou qu'il me manque un paramètre de configuration, mais je ne sais pas où chercher à ce stade, et toute aide serait appréciée.
Merci, G