2014-09-16 4 views
21

Je reçois un élément 'fournisseurs' exception à 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 quand je fais un paquet d'installation avec NuGet. Quand je vérifie les propriétés du fichier de l'explorateur que je peux voir ceci:Entity Framework: exception 'fournisseurs' d'élément non reconnu

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 le sentiment Entity Framework 4.4.0 est pas en mesure de reconnaître l'étiquette 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.

+0

essayez de supprimer le ', Version = 4.4.0.0, Culture = neutre, PublicKeyToken = b77a5c561934e089' –

Répondre

51

J'ai rencontré ce problème après la rétrogradation de EF de la version 6 vers 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 pas supprimée après la rétrogradation. Ainsi, vous pouvez simplement supprimer simplement le contenu dans les balises <providers> et les balises elles-mêmes et il fonctionne très bien:

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

en supprimant des travaux pour moi. Si vous supprimez le fichier de configuration, VS2012 le recrée avec les balises incriminées dans le fichier, et je dois les supprimer à nouveau manuellement. pourquoi serait-ce que je me demande? – timothy

+0

pour répondre à mon propre commentaire - Je supprimais de .exe.config dans le répertoire bin, pas à partir du fichier App.config. Supprimer du fichier App.config et tout va bien. – timothy

+1

@timothy C'est l'une de ces erreurs triple facepalm que font les programmeurs. Et je viens de le faire aujourd'hui ... je ne sais pas où était ma tête. – Apostrofix

0

Vous devez enlever l'étiquette du fichier app.config de votre projet et non de la YourProjectName.dll fichier .config car il le supprimera automatiquement de YourProjectName.dll.config après la construction de votre projet.

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

Questions connexes