Ich versuche, über eine C # .NET-Web-MVC-Anwendung eine Verbindung zu MySQL herzustellen.
Mein Problem ist, wenn ich versuche, ein ADO.NET-Entitätsdatenmodell hinzuzufügen, das aus einer Datenbank generiert wurde, basierend auf meiner MySQL-Verbindung, die folgende Fehlermeldung angezeigt wird:
Ihr Projekt verweist auf die neueste Version von Entity Framework; Ein Entity Framework-Datenbankanbieter, der mit .__ kompatibel ist. Diese Version konnte für Ihre Datenverbindung nicht gefunden werden. Beenden Sie diesen Assistenten und installieren Sie einen kompatiblen Anbieter und erstellen Sie Ihr Projekt neu, bevor Sie diese Aktion ausführen
Ich verwende folgende Software, Upgrades und Add-Ons:
NuGet-Pakete:
Meine web.config, entityFramework-Block:
..
</system.webServer>
<entityFramework>
<defaultConnectionFactory type="MySql.Data.Entity.MySqlConnectionFactory, MySql.Data.Entity.EF6" />
<providers>
<provider invariantName="MySql.Data.MySqlClient" type="MySql.Data.MySqlClient.MySqlProviderServices, MySql.Data.Entity.EF6" />
</providers>
</entityFramework>
<runtime>
..
Ich habe mir alle anderen Lösungen angesehen, die ich hier auf SO und allgemein über Google finden konnte, habe alle ausprobiert und keine der Lösungen scheint für sehr unterschiedliche Versionen von Connector/NET oder anderen Versionen zu funktionieren Programme benötigt.
Kann jemand erkennen, was ich falsch mache?
Grundlegende Lösung ist die Neuinstallation von MySQL und VisualStudio einschließlich Entity und .NET.
Aus irgendeinem Grund bin ich nicht sicher, warum der Installationsprozess die DLLs beschädigt oder zumindest die Erfahrung, die ich und andere Kollegen gemacht haben. Unsere Lösung bestand darin, alles Obige ohne Erfolg zu versuchen. Also haben wir am Ende eine Neuinstallation versucht und es hat funktioniert. Also versuch das :)
Ich hatte das gleiche Problem. Nach der Installation:
Ich wollte Visual Studio nicht neu installieren. Nach einigen Tests fand ich heraus, dass der Ordner " C:\Programme (x86)\Microsoft Visual Studio 12.0\Common7\IDE\PrivateAssemblies " alte Versionen der folgende Dateien:
Nach dem Schließen von Visual Studio habe ich diese Dateien durch die Dateien in " C:\Programme (x86)\MySQL\MySQL Connector Net 6.9.5\Assemblies\v4.5 " ersetzt. Jetzt funktioniert es!
Hinweis: Ersetzen Sie 6.9.5 im Namen des Unterordners, wobei die tatsächliche Version in Ihrem System installiert ist.
Dies funktionierte für mich, ohne das Visual Studio neu zu installieren oder was auch immer.
<entityFramework>
<defaultConnectionFactory type="MySql.Data.Entity.MySqlConnectionFactory, MySql.Data.Entity.EF6" />
<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>
NOTE: Stellen Sie sicher, dass Sie nur das entityFramework-Tag und dessen untergeordnete Tags entfernen und durch das oben geschnipste Element ersetzen. Wenn Sie "zusätzliche" Tags löschen, haben Sie möglicherweise noch größere Probleme mit Ihrem Projekt, wie ich es tat. X)
Ich bin auf das gleiche Problem gestoßen. Zum Glück habe ich es behoben. MySql.Data.dll oder MySql.Data.Entity.EF6.dll ist nicht kompatibel mit der Version EF 6.1. Was ich getan habe, habe ich EF-Version 6.0.0.0 mit diesem Befehl in der Nuget-Konsole installiert -> install-package entityframework -version 6.0.0.0, und das Problem wurde behoben.
Einfach zu web.config hinzufügen:
<system.data>
<DbProviderFactories>
<clear />
<add name="MySQL Data Provider"
invariant="MySql.Data.MySqlClient"
description=".Net Framework Data Provider for MySQL"
type="MySql.Data.MySqlClient.MySqlClientFactory,
MySql.Data" />
</DbProviderFactories>
</system.data>
Vergessen Sie nicht, die Lösung neu zu erstellen , bevor Sie erneut versuchen, ein ADO.NET-Entitätsdatenmodell hinzuzufügen, das aus der Datenbank generiert wurde.
Nun, das ist kein Problem, das ich selbst hatte, aber ich habe folgende mögliche Lösung gefunden:
Was mir hier aufgefallen ist, war, dass er zwei zusätzliche Pakete hatte, von denen Sie nicht "MySql.ConnectorNET.Entity" und "MySql.ConnectorNet.Data" erwähnt haben. Möglicherweise fehlen Ihnen diese und sie werden benötigt, um mit Entity Framework 6.1.1 zu arbeiten
(Quelle: Kein Entity Framework Provider gefunden für )
Wenn Sie das EntityFramework mit einer MySQL-Datenbank verwenden müssen, müssen Sie lediglich eine ältere Version von EntityFramework wie Version 5.0 mit der Paket-Manager-Konsole installieren. Schreibe Install-Package EntityFramework -Version 5.0.0. Genießen Sie . https://www.nuget.org/packages/EntityFramework/5.0.0
Ich habe Visual Studio 2013 Community verwendet. Wollte Code First auf MySQL-Datenbank tun. Ich hatte das gleiche Problem: "Ihr Projekt verweist auf die neueste Version von Entity Framework; ..." Was mein Problem gelöst hat, waren die unten aufgeführten einfachen Schritte.
Öffnen Sie Ihre Web.config oder App.config, um die Abschnitte Entityframework und system.data wie unten angegeben zu ändern
<entityFramework>
<defaultConnectionFactory type="System.Data.Entity.Infrastructure.SqlConnectionFactory, EntityFramework" />
<providers>
<provider invariantName="System.Data.SqlClient" type="System.Data.Entity.SqlServer.SqlProviderServices,EntityFramework.SqlServer" />
<provider invariantName="MySql.Data.MySqlClient" type="MySql.Data.MySqlClient.MySqlProviderServices, MySql.Data.Entity.EF6, Version=6.9.7.0, Culture=neutral, PublicKeyToken=c5687fc88969c44d">
</provider>
</providers>
</entityFramework>
<system.data>
<DbProviderFactories>
<remove invariant="MySql.Data.MySqlClient" />
<add name="MySQL Data Provider" invariant="MySql.Data.MySqlClient" description=".Net Framework Data Provider for MySQL" type="MySql.Data.MySqlClient.MySqlClientFactory, MySql.Data, Version=6.9.7.0, Culture=neutral, PublicKeyToken=c5687fc88969c44d" />
</DbProviderFactories>
</system.data>
Stellen Sie an dieser Stelle sicher, dass Sie Ihr Projekt neu erstellen. (Es ist ein Muss)
Fügen Sie nun ADO Entity Models hinzu und wählen Sie MySQL. Es funktioniert.
Die Plugins, die ich verwende, sind übrigens M4VS 1.2.3 und MySQL .NET Connector 6.9.7
Ich benutzte einfach Nuget, um auf die MySQL.dll (etc) zu verweisen, und es verwies automatisch auf die .net 4.0-DLLs. Ich habe gerade die Verweise auf 4.5 geändert und es hat funktioniert.
in nuget Kommandozeile tun
update-package -reinstall -ignoreDependencies
und neu erstellen lösung .__ diese arbeit oder mich
installieren Sie zunächst Version 1.2.3 erneut, und fügen Sie Ihrem Projekt die folgenden Verweise hinzu, oder überprüfen Sie die Versionen:
MySql.Data.dll
MySql.Data.Entity.EF6.dll
MySql.Web.dll
Entfernen Sie das standardmäßige entityFramework-Tag in App.config oder Web.config Erstellen Sie Ihr Projekt neu. Sie können das ADO.NET-Entitätsdatenmodell hinzufügen
Die Lösung besteht darin, dies zu app.config
/web.config
in dem Projekt hinzuzufügen, in dem Sie das Datenmodell hinzufügen/ändern möchten.
<system.data>
<DbProviderFactories>
<clear />
<add name="MySQL Data Provider"
invariant="MySql.Data.MySqlClient"
description=".Net Framework Data Provider for MySQL"
type="MySql.Data.MySqlClient.MySqlClientFactory,
MySql.Data,
Version=6.9.5.0,
Culture=neutral,
PublicKeyToken=c5687fc88969c44d" />
</DbProviderFactories>
</system.data>
Ändern Sie die Version entsprechend Ihrem Connector.
Ich habe ein Arbeitsprojekt mit Version 6.8.3 von MySQL Connector Libraries und EF6 v6.0.0. Ich erinnere mich an diesen Fehler. Ich glaube, ich habe es gelöst, dass Sie app.config manuell um einige Zeilen erweitert haben.
Ich liste Ihnen auf, dass die Zeilen in meiner app.config, die sich auf EF6 und MySQL-Konfiguration beziehen, sich von Ihren unterscheiden, vielleicht hilft es Ihnen:
<configSections>
...
<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, Version=6.8.3.0, Culture=neutral, PublicKeyToken=c5687fc88969c44d"></provider>
</providers>
</entityFramework>
Ich hatte MySQL Connector Net 6.8.3 mit dem von MySQL-Site heruntergeladenen Paket installiert und dem Projekt zwei Verweise hinzugefügt: MySql.Data und MySql.Data.Entity.EF6, beide Version 6.8.3 (ich stelle fest, dass Sie verschiedene Versionen verwenden dieser Dateien ...).
Ich habe EF6 (Version 6.0.0) über Nuget zu dem Projekt hinzugefügt.
Sind zwar nicht die neuesten Versionen, hoffe aber das hilft.
2018 gibt es immer noch Probleme ...
DB-First-Szenario: Für Visual Studio 2017 Community Edition habe ich eine Kombination gefunden:
Code-First-Szenario Ich kann mit der offiziellen Dokumentation laufen https://dev.mysql.com/doc/connector-net/en/connector-net-entityframework60.html .8.0.11 und EF6.
Ich habe das hinzugefügt, was es für mich gelöst hat:
<runtime>
<assemblyBinding xmlns="urn:schemas-Microsoft-com:asm.v1">
<dependentAssembly>
<assemblyIdentity name="EntityFramework" publicKeyToken="b77a5c561934e089" culture="neutral" />
<bindingRedirect oldVersion="0.0.0.0-6.0.0.0" newVersion="6.0.0.0" />
</dependentAssembly>
</assemblyBinding>
</runtime>