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?
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=""" 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.
Ich habe MySql.Data.Entity.EF6 auf eine ältere Version heruntergestuft und das Problem gelöst.
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
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.
Ich habe das gemacht und es hat für mich funktioniert
Installieren Sie die neuesten Versionen von entityframwork und mysql.data sowie mysql.data.entity über den Paketmanager von nuget
Erstellen Sie Ihre Modelldatenbanken nach der ersten automatischen Generierung
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.
Das Aktualisieren des Nuget-Pakets auf 6.10.8 hat dieses Problem behoben
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.
web.config
entsprechend zu ändern: Ah, nicht zu vergessen, ich habe auch hinzugefügt
DbConfiguration.SetConfiguration(new MySqlEFConfiguration())
in meiner app starten.
und es hat endlich funktioniert: D