web-dev-qa-db-fra.com

Erreur MySQL Entity Framework - Le fournisseur de magasin spécifié est introuvable ou n'est pas valide.

J'ai écrit une assemblée en C # pour effectuer tous les accès aux données d'une base de données MySQL. J'ai utilisé avec succès Assembly (une dll compilée) dans mon application de bureau Winform C #. Mais cela ne fonctionne que sur les PC sur lesquels le "MySQL Connector Net 6.4.4" est installé.

J'ai essayé d'utiliser le même assemblage avec mon projet de site Web asp.net. Tout d'abord, j'ai eu une erreur à propos d'une chaîne de connexion manquante. Cela a été facilement résolu en ajoutant la chaîne de connexion MySQL au fichier web.config. Je reçois maintenant cette erreur (trace de pile listée ci-dessous), j'ai essayé d'ajouter les dll suivantes à mon dossier bin pour la résoudre, mais cela n'a pas fonctionné.

MySql.Data.dll
MySql.Data.Entity.dll
MySql.Web.dll

System.Web.HttpUnhandledException (0x80004005): Exception of type 'System.Web.HttpUnhandledException' was thrown. 
---> System.ArgumentException: The specified store provider cannot be found in the configuration, or is not valid. 
---> System.ArgumentException: Unable to find the requested .Net Framework Data Provider. It may not be installed. at System.Data.Common.DbProviderFactories.GetFactory(String providerInvariantName) at System.Data.EntityClient.EntityConnection.GetFactory(String providerString) 
--- End of inner exception stack trace 
10
Hoody

Mais cela ne fonctionne que sur les PC sur lesquels le "MySQL Connector Net 6.4.4" est installé.

Cela signifie-t-il que vous essayez d'exécuter votre code sur une machine sur laquelle le fournisseur n'est pas installé? Dans ce cas, vous devez également enregistrer le fournisseur dans votre fichier de configuration, car l'installation l'ajoute à machine.config et, si vous ne l'avez pas installé, le fournisseur n'est actuellement pas enregistré.

Essayez d'ajouter ceci à votre fichier web.config:

<system.data>
  <DbProviderFactories>
    <add name="MySQL Data Provider" 
         invariant="MySql.Data.MySqlClient" 
         description=".Net Framework Data Provider for MySQL"  
         type="MySql.Data.MySqlClient.MySqlClientFactory, MySql.Data, Version=6.4.4.0, Culture=neutral, PublicKeyToken=c5687fc88969c44d" />
  </DbProviderFactories>
</system.data>
33
Ladislav Mrnka

J'ai également rencontré ce problème lors de l'utilisation du programme d'installation autonome du connecteur .NET 6.6.5.

Pour résoudre ce problème, désinstallez simplement le programme d'installation autonome du connecteur .NET et celui de mysql-community-installer, ce programme d'installation vous permet d'ajouter/de supprimer des fonctionnalités à MySQL. Le connecteur .NET, parmi celles-ci, est pris en charge par Entity Framework.

Une fois que vous utilisez ce connecteur, tous vos problèmes MySQL EF disparaissent.

6
Greg Quinn

Ajouter ceci dans la configuration Web

 <system.data>
    <DbProviderFactories>
      <remove invariant="MySql.Data.MySqlClient" />
      <add name="MySQL Data Provider" invariant="MySql.Data.MySqlClient" description=".Net Framework Data Provider for MySQL" type="MySql.Data.MySqlClient.MySqlClientFactory,MySql.Data" />
    </DbProviderFactories>
  </system.data>
4
Jay

Pour les personnes qui parviennent à cette vieille question via Google, comme je l'ai fait:

Vous obtiendrez également cette erreur si vous effectuez une mise à niveau vers MySQL pour Visual Studio 1.1.3, qui est la première version compatible avec Visual Studio 2013, tout en utilisant le connecteur MySQL 6.6.6, qui, à ma connaissance, est la dernière version compatible avec Entity Framework 4.3.1.

Nous savions que nous devions passer à EF5 (ou 6) dès que possible, mais maintenant, cela nous force à changer à un moment très gênant ...

2
Jorge Yanes Diez

J'ai eu cette erreur (j'utilisais le connecteur .net 6.4.3) après avoir désinstallé tous les frameworks .net et les avoir réinstallés. Le correctif consistait à désinstaller 6.4.3 et installer 6.6.5

0
Markus