web-dev-qa-db-fra.com

Entity Framework: exception "fournisseurs" d'élément non reconnu

J'obtiens une exception 'fournisseurs' _ au moment de l'exécution lorsque j'utilise Entity Framework 5.0.0 avec .NET 4.0. En fait, avec .NET 4.0, c’est la version 4.4.0 d’Entity Framework qui est chargée lors de la création d’un paquet d’installation avec NuGet. Lorsque je vérifie les propriétés du fichier à partir de l'explorateur, je peux voir ceci:

enter image description here

Voici mon fichier de configuration

 <configSections>
    <section name="entityFramework" type="System.Data.Entity.Internal.ConfigFile.EntityFrameworkSection, EntityFramework, Version=4.4.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" requirePermission="false" />
  <!-- For more information on Entity Framework configuration, visit http://go.Microsoft.com/fwlink/?LinkID=237468 --></configSections>
  <connectionStrings>
    <add name="xxx" connectionString="metadata=res://*/StreetMusicModel.csdl|res://*/StreetMusicModel.ssdl|res://*/StreetMusicModel.msl;         provider=MySql.Data.MySqlClient;provider connection string='         server=xxx.net;         user id=xxx;         password=xxx;         database=xxx'" providerName="System.Data.EntityClient" />
  </connectionStrings>
  <entityFramework>
    <defaultConnectionFactory type="System.Data.Entity.Infrastructure.LocalDbConnectionFactory, EntityFramework">
      <parameters>
        <parameter value="v12.0" />
      </parameters>
    </defaultConnectionFactory>
    <providers>
      <provider invariantName="MySql.Data.MySqlClient" type="MySql.Data.MySqlClient.MySqlProviderServices, MySql.Data.Entity" />
    </providers>
  </entityFramework>

J'ai l'impression qu'Entity Framework 4.4.0 n'est pas capable de reconnaître le tag. Puis-je simplement supprimer ou renommer la section? Lorsque je supprime la section, une autre exception se présente: Le fournisseur sous-jacent a échoué à l'ouverture.

23
Bastien Vandamme

J'ai eu ce problème après avoir rétrogradé EF de la version 6 à la version 5.0.0 à l'aide de Nuget. Je pense que le problème est que la configuration des fournisseurs est ajoutée lors de l'ajout de EF v6 mais n'est pas supprimée après la rétrogradation. Vous pouvez donc simplement supprimer le contenu des balises <providers> et les balises elles-mêmes, et tout fonctionnera correctement:

<entityFramework>
  <defaultConnectionFactory type="System.Data.Entity.Infrastructure.LocalDbConnectionFactory, EntityFramework">
    <parameters>
      <parameter value="v12.0" />
    </parameters>
  </defaultConnectionFactory>
</entityFramework>
57
Wery Nguyen

Vous devez supprimer la balise du fichier app.config de votre projet et non du fichier YourProjectName.dll.config car elle sera automatiquement supprimée de YourProjectName.dll.config après la construction de votre projet.

Remarque: la réponse se trouve dans le commentaire ci-dessus. Je viens de combiner la réponse ici.

0
thatskj