webentwicklung-frage-antwort-db.com.de

Vererbungssicherheitsregeln, die durch Typ verletzt werden: 'MySql.Data.Entity.MySqlEFConfiguration'

Ich habe eine asp.net-Webanwendung erstellt, die eine Verbindung zu einer MySQL-Datenbank herstellen soll.

Ich benutze das Entity Framework 6 mit einem Ado.net-Entity-Datenmodell. Ich habe auch das folgende Tutorial befolgt: https://dev.mysql.com/doc/connectors/de/connector-net-entityframework60.html#connector-net-ef6-config

Aufruf jedoch: DbConfiguration.SetConfiguration(new MySqlEFConfiguration());

führt zum Absturz meiner Anwendung. Es hat wahrscheinlich nichts mit dieser spezifischen Methode zu tun, weil das Erstellen eines DBContext auch die App zum Absturz bringt.

Irgendwelche Ideen, was diesen Fehler verursacht?

  • .NET Framework: 4.6.1
  • MySql.Data.Entity.EF6: 6.10.4

Web.config:

<configSections>
    <!-- For more information on Entity Framework configuration, visit http://go.Microsoft.com/fwlink/?LinkID=237468 -->
    <section name="entityFramework" type="System.Data.Entity.Internal.ConfigFile.EntityFrameworkSection, EntityFramework, Version=6.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" requirePermission="false" />
  </configSections>
      <entityFramework>
    <defaultConnectionFactory type="System.Data.Entity.Infrastructure.SqlConnectionFactory, EntityFramework"/>
    <providers>
      <provider invariantName="MySql.Data.MySqlClient"
                type="MySql.Data.MySqlClient.MySqlProviderServices, MySql.Data.Entity.EF6"/>
      <provider invariantName="System.Data.SqlClient"
                type="System.Data.Entity.SqlServer.SqlProviderServices, EntityFramework.SqlServer"/>
    </providers>
  </entityFramework>

<connectionStrings><add name="DatabaseEntities" connectionString="metadata=res://*/Database.Model.csdl|res://*/Database.Model.ssdl|res://*/Database.Model.msl;provider=MySql.Data.MySqlClient;provider connection string=&quot;&quot;" providerName="System.Data.EntityClient" /></connectionStrings><system.data>
    <DbProviderFactories>
      <remove invariant="MySql.Data.MySqlClient" />
      <add description=".Net Framework Data Provider for MySQL" invariant="MySql.Data.MySqlClient" name="MySQL Data Provider" type="MySql.Data.MySqlClient.MySqlClientFactory, MySql.Data, Version=6.10.4.0, Culture=neutral, PublicKeyToken=c5687fc88969c44d" />
    </DbProviderFactories>
  </system.data>

Vollständiger Fehler:

Vererbungssicherheitsregeln, die durch Typ verletzt werden: "MySql.Data.Entity.MySqlEFConfiguration". Abgeleitete Typen müssen entweder stimmen Sie mit der Sicherheitszugänglichkeit des Basistyps überein oder sind Sie kleiner zugänglich.

Beschreibung: Während der Ausführung der aktuellen Webanforderung ist eine nicht behandelte Ausnahme aufgetreten. Bitte überprüfen Sie die Stack-Ablaufverfolgung Weitere Informationen über den Fehler und den Ursprung des Fehlers in der Code. 

Ausnahmedetails: System.TypeLoadException: Vererbungssicherheitsregeln, die durch den Typ: .__ verletzt werden. "MySql.Data.Entity.MySqlEFConfiguration". Abgeleitete Typen müssen entweder stimmen Sie mit der Sicherheitszugänglichkeit des Basistyps überein oder sind Sie kleiner zugänglich.

21
Jamie

Ich habe MySql.Data.Entity.EF6 auf eine ältere Version heruntergestuft und das Problem gelöst.

38
Jamie

Ein Downgrade von MySql.Data.Entity von Version 6.10.x auf 6.9.10 kann das Problem lösen. Es hat meine gelöst

8
Hung Vu

Ich habe mit 6.9.10 einige schreckliche Instabilitätsprobleme gehabt. Es scheint auch, als sei es aus NuGet entfernt worden. Unter starker Last bekam ich sporadisch "Datenbankfehler nicht gefunden".

Versuchen Sie stattdessen 6.9.11. Das scheint mir stabil zu sein. Und es ist auf NuGet verfügbar.

2
Dennis Robinson

Ich habe das gemacht und es hat für mich funktioniert

  1. Installieren Sie die neuesten Versionen von entityframwork und mysql.data sowie mysql.data.entity über den Paketmanager von nuget

  2. Erstellen Sie Ihre Modelldatenbanken nach der ersten automatischen Generierung

  3. Deinstallieren Sie mysql.data.entity und installieren Sie mysql.data.entity v 6.9.10 Sie erfahren nur, wie Sie installieren oder deinstallieren
1
IAmIranian

Das gleiche Problem habe ich nach dem Upgrade der MySql NuGet-Pakete von 6.9.8 auf 6.10.6 in VS 2017 Community erhalten. Ich folgte den Anweisungen der akzeptierten Antwort und reduzierte sie auf 6.9.x. Nach weiteren Untersuchungen hat Oracle den Fehler in der kommenden Version 6.10.7 behoben ( https://bugs.mysql.com/bug.php?id=89134 ).

Kurzum, bis 6.10.7 veröffentlicht wird, downgrade auf 6.9.x! Ich habe mit dem Nuget-Paketmanager zurückgekehrt und musste nichts anderes ändern, damit es funktioniert. 

1
Matt H

Das Aktualisieren des Nuget-Pakets auf 6.10.8 hat dieses Problem behoben

0
flobadob

Dasselbe gilt für mich mit VS2017. Ich habe MySql.Data.Entity v6.9.10 verwendet.
Vorher habe ich auch den mysql-Connector für .Net Version 6.9.10 installiert. 

  • Danach habe ich das NuGet-Paket für MySql.Data.Entity installiert. 
  • Der letzte Schritt bestand darin, den web.config entsprechend zu ändern:
    • verbindungszeichenfolge 
    • entity Framework und 
    • system.data (Beachten Sie, dass Sie in den letzten beiden Versionen auch die Version aktualisieren müssen, wenn Sie sie von der mysql-Website nehmen.)
  • Ah, nicht zu vergessen, ich habe auch hinzugefügt 

    DbConfiguration.SetConfiguration(new MySqlEFConfiguration()) 
    

    in meiner app starten. 

und es hat endlich funktioniert: D

0
C.Sv