2013-11-25 13 views
20

Niedawno przeczytałem wiadomość, że MariaDB jest zamiennym zamiennikiem MySQL od MySQL has unfriendly pricing for clustered/enterprise version według Google.Używanie MariaDB z Entity Framework

Teraz nie mogę znaleźć nic istotnego na temat EF dla MariaDB w Google, więc mam nadzieję, że ktoś o tym wie. Czy można używać MySQL driver for this since it is 100% compatible? jakieś pomysły?

Aktualizacja

Właśnie się dowiedziałem, że RedHat is also switching from MySQL to MariaDB dla niego jest domyślny system zarządzania bazami danych. Tak więc mój obecny projekt jest niezbędny, aby przełączyć go na MariaDB.

+0

Widząc jak MariaDB jest widelec polityczny, że będą szalony złamać kompatybilność z protokołem drutu MySQL choć. Prawdopodobnie łatwiej jest utrzymać zgodność, niż utrzymywać całą rodzinę oprogramowania klienckiego. Wyraźnie mówią to również w dokumentach: https://mariadb.com/kb/en/mariadb-versus-mysql-compatibility/. – millimoose

+0

Nie mam zasobów do zwirtualizowania serwera RedHat z MariaDB. Próbowałem MySQL na serwerze RedHat. –

+0

Nie można pobrać VirtualBox, zainstalować CentOS i MariaDB w tym i wskazać przykładowy projekt w tym DB? – millimoose

Odpowiedz

7

Mogłem używać MariaDB 10 z Entity Framework, chociaż wymagało to trochę pracy, głównie dlatego, że narzędzia MySQL są nieco błędne.

Aby pracować z MySQL/MariaDB w Visual Studio 2010/2012, trzeba zainstalować MySQL for Visual Studio użyciu MySQL Installer. Użyłem wersji internetowej, ponieważ chciałem tylko pobrać złącza i rozszerzenia. Po wykonaniu tej czynności można dodawać połączenia z MariaDB i tworzyć modele EF.

To jednak nie wystarczy, aby uruchomić swój kod. Najpierw musisz dodać złącze MySQL za pomocą NuGet.

Niestety, MySQL for Visual Studio dodaje wzmiankę o starszej wersji dostawcy (wspomniana here) i nie może załadować nowszej wersji. Aby rozwiązać ten problem, dodałem następującą sekcję w mojej aplikacji.config:

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

To zastępuje stare odniesienie nowym. Zauważ, że użyłem

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

nie

<remove name="MySql Data Provider"/> 

w elemencie remove.

Obecnie MySQL dla Visual Studio nie jest obsługiwana w Visual Studio 2013

AKTUALIZACJA - 2017

Connector/NET jest zasadniczo stagnacji, z tymi samymi problemami, które pojawiły się w 2013 roku, na przykład nie prawdziwe połączenia asynchroniczne. Wywołania "asynchroniczne" są fałszywe - są uruchamiane na osobnych wątkach, pokonując sam cel użycia async. Już samo to czyni go nieprzydatnym dla aplikacji internetowych, gdzie chce się obsłużyć jak najwięcej żądań przy użyciu minimalnej liczby wątków/procesora wynoszącej minimum.

Mniejsza o obsługę .NET Core.

Dlatego w ciągu ostatnich kilku lat ludzie zbudowali własnych, prawdziwie asynchronicznych dostawców. Niektóre z bardziej popularnych należą:

  • MySqlConnector oferuje prawdziwie asynchroniczną dostawcy NET i.NET Rdzeń
  • Pomelo oferuje wsparcie EF rdzenia na górze MySQLConnector

z około 100K Nuget pobierze każdy, częste wersje i aktywne utrzymanie.

Oni nie są „oficjalne”, ale na pewno warto spróbować

+0

Istnieje teraz pewien rodzaj wsparcia (VS2013 i MySQL), ale to jest ból. W efekcie stworzyłem EF w 2012 roku, a następnie wykorzystałem 2013 do rozwoju. – Noctis

+0

A potem masz aplikację GPL, btw. - jeśli nie masz komercyjnej licencji na złącze MySQL GPL (nie LGPL). –

+0

@StefanSteiger "urzędowy" konektor ma tak wiele poważnych problemów (np. Fałszywe asynchroniczne połączenia), że ludzie zaczęli swoje własne projekty w ciągu ostatnich 3 lat. [MySqlConnector] (https://github.com/mysql-net/MySqlConnector) wydaje się być najpopularniejszym dostawcą ADO.NET i [Pomelo] (https://github.com/PomeloFoundation/Pomelo.EntityFrameworkCore.MySql) oferuje na dodatek wsparcie EF. Wygląda na to, że * Oracle * nie przejmuje się zbytnio MySQL (dla .NET mam na myśli) –