Mysql
 sql >> Datenbank >  >> RDS >> Mysql

Verwendung von MariaDB mit Entity Framework

Ich konnte MariaDB 10 mit Entity Framework verwenden, obwohl es ein bisschen Arbeit erforderte, hauptsächlich weil die MySQL-Tools ein bisschen fehlerhaft sind.

Um mit MySQL/MariaDB in Visual Studio 2010/2012 zu arbeiten , müssen Sie MySQL für Visual Studio installieren mit dem MySQL-Installationsprogramm . Ich habe die Webversion verwendet, da ich nur die Konnektoren und Erweiterungen herunterladen wollte. Sobald Sie dies getan haben, können Sie Verbindungen zu MariaDB hinzufügen und EF-Modelle erstellen.

Dies reicht jedoch nicht aus, um Ihren Code auszuführen. Zuerst müssen Sie den MySQL Connector mit NuGet hinzufügen.

Leider fügt MySQL für Visual Studio einen Verweis auf eine ältere Anbieterversion hinzu (erwähnt hier ) und kann die neuere Version nicht laden. Um dies zu beheben, habe ich den folgenden Abschnitt in meiner app.config hinzugefügt:

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

Dadurch wird die alte Referenz durch eine neue ersetzt. Beachten Sie, dass ich

verwendet habe
<remove invariant="MySql.Data.MySqlClient"/>

nicht

<remove name="MySql Data Provider"/>

im remove Element.

Derzeit wird MySQL für Visual Studio in Visual Studio 2013 nicht unterstützt

AKTUALISIERUNG - 2017

Connector/.NET stagniert im Wesentlichen, mit den gleichen Problemen wie 2013, z. B. keine echten asynchronen Aufrufe. Die „async“-Aufrufe sind gefälscht – sie werden in separaten Threads ausgeführt, was den eigentlichen Zweck der Verwendung von async zunichte macht . Das allein macht es ungeeignet für Webanwendungen, wo man mit dem Minimum so viele Anfragen wie möglich bedienen möchte Anzahl Threads/CPU.

Vergiss die .NET Core-Unterstützung.

Deshalb haben die Leute in den letzten Jahren ihre eigenen, wirklich asynchronen Anbieter gebaut. Einige der beliebtesten sind:

  • MySqlConnector bietet einen wirklich asynchronen Anbieter für .NET und .NET Core
  • Pomelo bietet zusätzlich zu MySQLConnector EF Core-Unterstützung

Mit jeweils etwa 100.000 NuGet-Downloads, häufigen Versionen und aktiver Wartung.

Sie sind nicht "offiziell", aber definitiv einen Versuch wert

Lockdown-Update – April 2020

Es scheint, als hätten MySqlConnector und Pomelo richtig Fahrt aufgenommen.

Connector/.NET hat schließlich ein paar Versionen veröffentlicht nach fast zwei Jahren mit dem neuesten, 8.0.19, mit 233K Downloads.

MySqlConnector andererseits 496K Downloads für Version 0.61.0. Kleinere Updates sind häufig, wobei die neueste Version 0.63.2 8 Stunden vor diesem Beitrag erscheint. Das ist wahrscheinlich etwas zu häufig, aber viel besser als 2 Jahre.

Ich habe die Funktionen oder die Kompatibilität mit MySql 8 noch nicht überprüft. Wenn ich mich jedoch entscheiden müsste (was ich wahrscheinlich nächste Woche für ein Projekt tun werde), würde ich mit MySqlConnector beginnen.

Ich vermute, dass Connector/.NET gezwungen sein wird, wesentlich häufigere Updates anzubieten, um mit den .NET Core-Versionen Schritt zu halten, aber das ist an dieser Stelle nur Spekulation.