web-dev-qa-db-de.com

Entity Framework: Ausnahme für nicht erkannte Elementanbieter

Wenn ich Entity Framework 5.0.0 mit .NET 4.0 verwende, erhalte ich zur Laufzeit eine Ausnahme von Unrecognized-Element 'provider'. Mit .NET 4.0 wird eigentlich die Version 4.4.0 von Entity Framework geladen, wenn ich ein Installationspaket mit NuGet durchführe. Wenn ich die Eigenschaften der Datei im Explorer überprüfe, kann ich Folgendes sehen:

enter image description here

Hier ist meine Konfigurationsdatei

 <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, dass Entity Framework 4.4.0 das Tag nicht erkennt. Kann ich den Abschnitt einfach entfernen oder umbenennen? Wenn ich den Abschnitt entferne, erhalte ich eine weitere Ausnahme: Der zugrunde liegende Provider ist beim Öffnen fehlgeschlagen.

23

Ich hatte dieses Problem, nachdem EF von Version 6 mit Nuget auf Version 5.0.0 heruntergestuft wurde. Ich denke, das Problem ist, dass die Providerkonfiguration hinzugefügt wird, wenn EF v6 hinzugefügt wird, aber nach dem Downgrade nicht entfernt wird. Sie können also einfach den Inhalt innerhalb der <providers>-Tags und der Tags selbst entfernen und es wird gut funktionieren:

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

Sie müssen das Tag aus der Datei app.config Ihres Projekts und nicht aus der Datei YourProjectName.dll.config entfernen, da es nach dem Erstellen des Projekts automatisch aus YourProjectName.dll.config entfernt wird.

Hinweis: Die Antwort finden Sie im obigen Kommentar. Ich habe gerade die Antwort hier kombiniert.

0
thatskj