Entity Framework: exception 'providers' de l'élément non reconnu
Je reçois une exceptionÉlément non reconnu 'providers' lors 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 de Entity Framework qui est chargée lorsque je fais un package d'installation avec NuGet. Quand je vérifie les propriétés du fichier à partir de l'Explorateur, je peux voir ceci:
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 le sentiment que Entity Framework 4.4.0 n'est pas capable de reconnaître la balise. Puis-je simplement supprimer ou renommer la section? Lorsque je supprime la section, j'obtiens une autre exception: le fournisseur sous-jacent a échoué sur Open.
2 réponses
J'ai eu ce problème après avoir rétrogradé EF de la version 6 à la version 5.0.0 en utilisant Nuget. Je pense que le problème est que la configuration des fournisseurs est ajoutée lors de l'ajout D'EF v6 mais pas supprimée après la rétrogradation. Ainsi, vous pouvez simplement supprimer le contenu dans les balises <providers>
et les balises elles-mêmes et cela fonctionnera bien:
<entityFramework>
<defaultConnectionFactory type="System.Data.Entity.Infrastructure.LocalDbConnectionFactory, EntityFramework">
<parameters>
<parameter value="v12.0" />
</parameters>
</defaultConnectionFactory>
</entityFramework>
Vous devez supprimer la balise de l'application de votre projet.fichier de configuration et non du nom YourProjectName.DLL.fichier de configuration car il le supprimera automatiquement de YourProjectName.DLL.config après avoir construit votre projet.
Note: la réponse se trouve dans le commentaire ci-dessus lui-même. Je viens de combiner la réponse ici.