Mysql
 sql >> Baza danych >  >> RDS >> Mysql

Korzystanie z MariaDB z Entity Framework

Udało mi się użyć MariaDB 10 z Entity Framework, chociaż wymagało to trochę pracy, głównie dlatego, że narzędzia MySQL są nieco wadliwe.

Praca z MySQL/MariaDB w Visual Studio 2010/2012 , musisz zainstalować MySQL dla Visual Studio za pomocą Instalator MySQL . Użyłem wersji internetowej, ponieważ chciałem tylko pobrać konektory i rozszerzenia. Gdy to zrobisz, możesz dodać połączenia do MariaDB i utworzyć modele EF.

To jednak nie wystarczy do uruchomienia kodu. Najpierw musisz dodać łącznik MySQL przy użyciu NuGet.

Niestety, MySQL dla Visual Studio dodaje odniesienie do starszej wersji dostawcy (wspomnianej tutaj ) i nie można załadować nowszej wersji. Aby to naprawić, dodałem następującą sekcję w moim app.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>

Zastępuje to stare odniesienie nowym. Zauważ, że użyłem

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

nie

<remove name="MySql Data Provider"/>

w remove element.

Obecnie MySQL for Visual Studio nie jest obsługiwany w Visual Studio 2013

AKTUALIZACJA – 2017

Connector/.NET jest w zasadzie w stagnacji, z takimi samymi problemami, jakie miał w 2013 roku, np. brak prawdziwych wywołań asynchronicznych. Wywołania "async" są fałszywe - są uruchamiane w osobnych wątkach, niwecząc sam cel używania async . Już samo to sprawia, że ​​nie nadaje się do aplikacji internetowych, w których chce się obsłużyć jak najwięcej żądań, korzystając z minimum liczba wątków/procesor.

Nieważne o obsłudze .NET Core.

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

  • MySqlConnector oferuje prawdziwie asynchronicznego dostawcę dla .NET i .NET Core
  • Pomelo oferuje obsługę EF Core w połączeniu z MySQLConnector

Z około 100 000 pobrań NuGet, częstymi wersjami i aktywną konserwacją.

Nie są „oficjalne”, ale zdecydowanie warto spróbować

Aktualizacja blokady – kwiecień 2020

Wygląda na to, że MySqlConnector i Pomelo naprawdę wystartowały.

Connector/.NET w końcu wydał kilka wersji po prawie dwóch latach z najnowszym, 8.0.19, otrzymałem 233 tys. pliki do pobrania.

MySqlConnector z drugiej strony otrzymałem 496K pliki do pobrania dla wersji 0.61.0. Drobne aktualizacje są częste, a najnowsza 0,63.2 pojawi się na 8 godzin przed tym postem. To prawdopodobnie trochę za często, ale znacznie lepiej niż 2 lata.

Nie sprawdziłem jeszcze funkcji ani kompatybilności z MySQL 8. Gdybym miał jednak wybierać (co prawdopodobnie zrobię dla projektu w przyszłym tygodniu), zacząłbym od MySqlConnector.

Podejrzewam, że Connector/.NET będzie zmuszony do oferowania znacznie częstszych aktualizacji, aby nadążyć za wydaniami .NET Core, ale w tym momencie to tylko spekulacje.




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Uzyskaj STARĄ wartość w wyzwalaczu MySQL po oświadczeniu o aktualizacji

  2. Jak wyeksportować bazę danych MySQL do JSON?

  3. Jak mogę przejść przez zbiór wyników mysql w ramach beztłuszczowego frameworka?

  4. MySql nie może zaktualizować wiersza nadrzędnego, gdy mam ON UPDATE CASCADE

  5. MYSQL:Użytkownik — konfiguracja tabeli szczegółów profilu — najlepsze praktyki