2013-11-25 5 views
20

Kürzlich habe ich eine Nachricht gelesen, dass MariaDB ein Drop-off-Ersatz für MySQL seit MySQL has unfriendly pricing for clustered/enterprise version nach Google ist.Verwenden von MariaDB mit Entity Framework

Jetzt kann ich nichts relevantes über EF für MariaDB auf Google finden, also hoffe ich, dass jemand davon weiß. Ist es in Ordnung, MySQL driver for this since it is 100% compatible zu verwenden? Irgendwelche Gedanken?

aktualisieren

Ich habe gerade herausgefunden, dass RedHat is also switching from MySQL to MariaDB für das Standard-Datenbank-Management-System ist. Daher ist es für mein aktuelles Projekt notwendig, es auf MariaDB umzustellen.

+0

Sehen als MariaDB eine politische Gabel ist, würde sie verrückt sein Kompatibilität brechen mit Wire-Protokoll von MySQL. Es ist wahrscheinlich einfacher, die Kompatibilität aufrechtzuerhalten, als eine ganze Familie von Client-Software zu verwalten. Sie sagen dies auch ausdrücklich in der Dokumentation: https://mariadb.com/kb/en/mariadb-versus-mysql-compatibility/. – millimoose

+0

Ich habe nicht die Ressourcen, um einen RedHat Server mit MariaDB zu virtualisieren. Was ich versucht habe, ist ein MySQL auf einem RedHat Server. –

+0

Sie können VirtualBox nicht herunterladen, CentOS und MariaDB installieren und ein Beispielprojekt auf diese Datenbank verweisen? – millimoose

Antwort

7

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

mit MySQL/MariaDB in Visual Studio arbeiten 2010/2012, müssen Sie MySQL for Visual Studio mit MySQL Installer installieren. Ich benutzte die Web-Version, da ich nur die Anschlüsse und die Erweiterungen herunterladen wollte. Sobald Sie dies getan haben, können Sie Verbindungen zu MariaDB hinzufügen und EF-Modelle erstellen.

Dies ist jedoch nicht genug, um den 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 Provider-Version (here genannt) hinzu und kann die neuere Version nicht laden. Um das Problem zu beheben, habe ich den folgenden Abschnitt in meiner app.config hinzugefügt:

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

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

nicht

<remove name="MySql Data Provider"/> 

im remove Element verwendet wird.

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

UPDATE - 2017

Connector/NET im Wesentlichen stagniert, mit den gleichen Problemen es im Jahr 2013 hatte, zB keine echte asynchrone Aufrufe. Die "Async" -Aufrufe sind gefälscht - sie laufen auf separaten Threads und vereiteln den eigentlichen Zweck der Verwendung von async. Das allein macht es für Web-Anwendungen ungeeignet, wo man so viele Anfragen wie möglich unter Verwendung der minimalen Anzahl von Threads/CPU abfeuern möchte.

Macht nichts mit .NET Core-Unterstützung.

Deshalb haben Menschen in den letzten Jahren ihre eigenen, wirklich asynchronen Anbieter aufgebaut. Einige der beliebtesten sind:

  • MySqlConnector bietet eine wirklich asynchronen Provider für .NET und.NET-Core
  • Pomelo bietet EF Core-Unterstützung auf der MySQLConnector

Mit etwa 100K NuGet lädt jeden, häufige Versionen und aktive Wartung. obwohl

Sie sind nicht „offizielle“, aber auf jeden Fall einen Versuch wert

+0

Es gibt jetzt eine Art von Unterstützung (VS2013 & MySQL), aber es ist ein Schmerz. Am Ende habe ich EF mit 2012 erstellt und dann 2013 für die Entwicklung genutzt. – Noctis

+0

Und dann hast du eine GPL-Anwendung, übrigens. - wenn Sie keine kommerzielle Lizenz für den GPL (nicht LGPL) MySQL-Connector haben. –

+0

@StefanSteiger Der "offizielle" Connector hat so viele ernste Probleme (zB gefälschte Async-Aufrufe), dass Leute in den letzten 3 Jahren ihre eigenen Projekte gestartet haben. [MySqlConnector] (https://github.com/mysql-net/MySqlConnector) scheint der beliebteste ADO.NET-Provider zu sein und [Pomelo] (https://github.com/PomeloFoundation/Pomelo.EntityFrameworkCore.MySql) bietet zusätzlich EF-Unterstützung an. Es sieht aus wie * Oracle * kümmert sich nicht so sehr um MySQL (für .NET meine ich) –