2014-09-16 6 views
21

Ich bekomme eine Unbekannte Element 'Provider' Ausnahme zur Laufzeit, wenn ich Entity Framework 5.0.0 mit .NET 4.0. Eigentlich mit .NET 4.0 ist es die Version 4.4.0 von Entity Framework, die geladen wird, wenn ich ein Installationspaket mit NuGet mache. Wenn ich die Eigenschaften der Datei aus dem Explorer überprüfen kann ich sehen:Entity Framework: Unbekannte Element "Provider" Ausnahme

enter image description here

Hier ist meine Config-Datei

<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> 

Ich habe das Gefühl, 4.4.0 Entity Framework ist nicht in der Lage zu erkennen, das Etikett Kann ich den Abschnitt einfach entfernen oder umbenennen? Wenn ich den Abschnitt entferne, erhalte ich eine weitere Ausnahme: Der zugrunde liegende Provider ist bei Open fehlgeschlagen.

+0

versuchen Sie das Entfernen der ', Version = 4.4.0.0, Culture = neutral, PublicKeyToken = b77a5c561934e089' –

Antwort

51

Ich hatte dieses Problem nach dem Downgrade von EF von Version 6 auf Version 5.0.0 mit Nuget. Ich denke, das Problem ist, dass die Konfiguration des Providers beim Hinzufügen von EF v6 hinzugefügt, aber nach dem Downgrade nicht entfernt wird. So können Sie einfach entfernen Sie einfach den Inhalt innerhalb der <providers>-Tags und den Tags selbst und es wird funktionieren:

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

Entfernen funktioniert für mich. Wenn Sie die Konfigurationsdatei VS2012 löschen, wird sie erneut mit den anstößigen -Tags erstellt, und ich muss sie erneut manuell entfernen. Warum sollte ich das fragen? – timothy

+0

, um meinen eigenen Kommentar zu beantworten - Ich entfernte von .exe.config im Verzeichnis bin, nicht aus der App.config-Datei. Entfernen Sie aus der App.config-Datei und alles ist in Ordnung. – timothy

+1

@timothy Das ist einer jener dreifachen Facepalm-Fehler, die Programmierer tun. Und ich habe es gerade heute gemacht. Ich weiß nicht, wo mein Kopf war. – Apostrofix

0

Sie benötigen Tag aus Ihrem Projekt app.config-Datei zu entfernen und nicht aus der YourProjectName.dll .config-Datei, da sie nach dem Erstellen Ihres Projekts automatisch aus YourProjectName.dll.config entfernt wird.

Hinweis: Die Antwort findet sich im obigen Kommentar selbst. Ich habe die Antwort hier nur zusammengefasst.