webentwicklung-frage-antwort-db.com.de

Der ADO.NET-Provider mit dem unveränderlichen Namen 'MySql.Data.MySqlClient' ist entweder nicht in der Konfigurationsdatei des Computers oder der Anwendung registriert

Ich habe eine asp.net-Lösung, die das Entity Framework 6 für den Mysql-Server verwendet. 

jetzt muss ich an einer neuen Maschine an dieser Lösung arbeiten,
aber ich habe einige probleme:
1) Beim Erstellen der Lösung wird folgende Fehlermeldung angezeigt: "Der ADO.NET-Provider mit dem unveränderlichen Namen 'MySql.Data.MySqlClient' ist entweder nicht in der Konfigurationsdatei des Computers oder der Anwendung registriert". 

 error screenshot

App.config: 

<entityFramework>
  <providers>
    <provider invariantName="MySql.Data.MySqlClient" type="MySql.Data.MySqlClient.MySqlProviderServices, MySql.Data.Entity.EF6, Version=6.9.9.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.9.0, Culture=neutral, PublicKeyToken=c5687fc88969c44d" />
  </DbProviderFactories>
</system.data>  

2) Beim Öffnen der Datei model.edmx erhalte ich eine Nachricht:
"Der Entity-Modus-Designer kann die angeforderte Datei nicht anzeigen". 

 error screenshot

Ich habe auf der Maschine installiert: 

1) MySQL-Connector/Netz 6.9.9
2) Mysql für Visual Studio 1.2.6
3) MySQL-Connector odbc 5.3.6.

was kann ich machen?

13
Ariela

Ich habe die meisten Lösungsvorschläge im Internet verfolgt, aber leider waren alle gescheitert. Das Problem tritt auf, weil Visual Studio für MySql Connector nicht ausreichend ist und ich es durch die Installation von mysql-connector-net-7.0.4 ( https://downloads.mysql.com/archives/c-net/ ) gelöst habe. 

9
iQalalwa

Die oben genannten Lösungen haben für mich nicht funktioniert. Inspiriert von dieser Antwort konnte ich dieses Problem jedoch lösen, indem ich Versionsinformationen unter dem Tag entityFramework in meiner Datei Web.config entfernte:

    <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, Version=6.9.9.0, Culture=neutral, PublicKeyToken=c5687fc88969c44d">
        </provider>
      </providers>
    </entityFramework>

wird:

    <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>
      </providers>
    </entityFramework>

ETA: Wie in diesem Follow-up angegeben, kann es auch erforderlich sein, die Version von MySql.Data in der Web.config-Datei manuell zu bearbeiten:

<dependentAssembly>
    <assemblyIdentity name="MySql.Data" culture="neutral" publicKeyToken="c5687fc88969c44d" />
    <bindingRedirect oldVersion="0.0.0.0-6.9.9.0" newVersion="6.9.9.0" />
</dependentAssembly>
3
alexanian

Ich habe viel google gemacht und die Lösung gefunden. Stellen Sie sicher, dass MySQL.Data.dll, MySQL.Web.dll, MySQL.Data.Entity.dll und System.Data.Entity.dll alle lokal kopiert werden (Rechtsklick auf Assembly und Vergewissern Sie sich, dass Copy Local auf true gesetzt ist.) Ich habe auch Folgendes lokal hinzugefügt, als ich versuchte, dieses Problem zu debuggen, aber es war wahrscheinlich nicht erforderlich. System.Data.dll [wahrscheinlich optional] System.Data.Entity.Design [wahrscheinlich optional]

Und hier ist der Schritt, über den Sie nicht an vielen Stellen auf Google oder AppHarbor lesen werden! Fügen Sie Ihrer web.config-Datei Folgendes hinzu:

  <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.4.4.0, Culture=neutral, PublicKeyToken=c5687fc88969c44d" />
  </DbProviderFactories>
</system.data>
3
Biswajit Pal

Um dieses Problem zu lösen, musste ich zusätzlich zu den in diesem Beitrag beschriebenen Änderungen die Version von MySql.Data in web.config wie folgt manuell bearbeiten:

<dependentAssembly>
    <assemblyIdentity name="MySql.Data" culture="neutral" publicKeyToken="c5687fc88969c44d" />
    <bindingRedirect oldVersion="0.0.0.0-6.9.9.0" newVersion="6.9.9.0" />
</dependentAssembly>
2
Chris Bremner

Entfernen Sie die alte Referenz von MySql.Data.Entity.EF6 aus der Liste der Referenzen. Neuinstallation über Nuget Package Manager und es wird funktionieren /

1
Idan Shechter

Sie müssen codeConfigurationType="MySql.Data.Entity.MySqlEFConfiguration, MySql.Data.Entity.EF6" In Ihrer Konfigurationsdatei hinzufügen oder DbConfiguration.SetConfiguration(new MySqlEFConfiguration()) beim Start der Anwendung aufrufen.

0
Dmitry Litus

Es funktioniert für mich mit dem folgenden Abschnitt in app.config:

<system.data>
    <DbProviderFactories>
        <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> 
0
Anson Woody