webentwicklung-frage-antwort-db.com.de

MySQL Connector mit EF6 in Visual Studio 2013

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:

  • Visual Studio 2013
  • MySQL Server v5.6.21
  • MySQL für Visual Studio v1.2.3
  • Connector/NET v6.9.4

NuGet-Pakete:

  • EntityFramework v6.1.1
  • MySQL.Data v6.9.3
  • MySQL.Data.Entities v6.8.3.0
  • SQL.Web v6.9.3

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?

21
Eax

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

8
Lars Nielsen

Ich hatte das gleiche Problem. Nach der Installation:

  • Visual Studio 2013 Community Edition
  • MySQL für Visual Studio 1.2.3
  • MySQL Connector .NET 6.9.5

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:

  • MySql.Data.dll
  • MySql.Data.Entity.EF6.dll
  • MySql.Web.dll

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.

23
Alix

Dies funktionierte für mich, ohne das Visual Studio neu zu installieren oder was auch immer.

  • installiert aktuelles MySQL Visual Studio Plugin und MySQL Connector-Netzwerk
  • entfernt das entityFramework-Tag in App.config oder Web.config und alle seine untergeordneten Tags.
  • ersetzt es mit dem folgenden Code:
<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>
  • hinzugefügt MySql.Data.dll, MySql.Data.Entity.EF6.dll und MySql.Web.dll (wenn keine WPF-App) verweist auf das Projekt.
  • neu aufgebaut das Projekt und fügte dann das ado.net-Modell hinzu.

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)

18

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.

3
Chi

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. 

3

Nun, das ist kein Problem, das ich selbst hatte, aber ich habe folgende mögliche Lösung gefunden:

  1. Klicken Sie mit der rechten Maustaste auf die Lösung (oberste Ebene im Lösungs-Explorer).
  2. Verwalten Sie Nuget-Pakete für eine Lösung.
  3. Gehen Sie zur Registerkarte Installed.
  4. Für alle EntityFramework-bezogenen Pakete (MySql.Data, MySql.Data.Entities, MySql.ConnectorNET.Entity und MySql.ConnectorNET.Data) wählen Sie sie aus und klicken Sie auf die Schaltfläche "Verwalten".
  5. Aktivieren Sie jedes Paket für alle Projekte.

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 )

1
Pheonyx

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

1

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.

  1. Fügen Sie nach dem Hinzufügen eines Projekts EntityFramework6.1.3 über das Installationspaket EntityFramework mit Nuget Console hinzu
  2. Benutzerkonsole zum Hinzufügen einer MySQL-Referenz durch MySQL.Data.Entity
  3. Ö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>
    
  4. Stellen Sie an dieser Stelle sicher, dass Sie Ihr Projekt neu erstellen. (Es ist ein Muss)

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

0
skillworks

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.

0
Tod

in nuget Kommandozeile tun

update-package -reinstall -ignoreDependencies

und neu erstellen lösung .__ diese arbeit oder mich

0
Artem Hohryakov

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

0
caras

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.

0
Bart Calixto

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.

0
iag

2018 gibt es immer noch Probleme ...

DB-First-Szenario: Für Visual Studio 2017 Community Edition habe ich eine Kombination gefunden:

  • MySQL für Visual Studio 1.2.8
  • MySQL Connector .NET 6.9.9
  • EntityFramework 5.0.0 (Ich habe verschiedene Kombinationen für v6.x ohne Glück ausprobiert)

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.

0
miha

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