sql >> Databasteknik >  >> RDS >> Mysql

Använder MariaDB med Entity Framework

Jag kunde använda MariaDB 10 med Entity Framework även om det krävde lite arbete främst för att MySQL-verktygen är lite buggiga.

Att arbeta med MySQL/MariaDB i Visual Studio 2010/2012 ,du måste installera MySQL för Visual Studio med MySQL Installer . Jag använde webbversionen eftersom jag bara ville ladda ner kontakterna och tilläggen. När du har gjort detta kan du lägga till anslutningar till MariaDB och skapa EF-modeller.

Detta är dock inte tillräckligt för att köra din kod. Först måste du lägga till MySQL Connector med NuGet.

Tyvärr lägger MySQL för Visual Studio till en referens till en äldre leverantörsversion (nämnd här ) och kan inte ladda den nyare versionen. För att fixa detta lade jag till följande avsnitt i min 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>

Detta ersätter den gamla referensen med en ny. Observera att jag använde

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

inte

<remove name="MySql Data Provider"/>

i remove element.

För närvarande stöds inte MySQL för Visual Studio i Visual Studio 2013

UPPDATERING – 2017

Connector/.NET är i huvudsak stillastående, med samma problem som den hade 2013, t.ex. inga riktiga asynkrona samtal. "Async"-anropen är falska - de körs på separata trådar, vilket motverkar själva syftet med att använda async . Bara det gör det olämpligt för webbapplikationer, där man vill servera så många förfrågningar som möjligt med minimum antal trådar/CPU.

Bry dig inte om .NET Core-stöd.

Det är därför människor under de senaste åren har byggt sina egna, verkligen asynkrona leverantörer. Några av de mer populära är:

  • MySqlConnector erbjuder en verkligt asynkron leverantör för .NET och .NET Core
  • Pomelo erbjuder EF Core-stöd ovanpå MySQLConnector

Med cirka 100 000 NuGet-nedladdningar vardera, frekventa versioner och aktivt underhåll.

De är inte "officiella", men definitivt värda att testa

Låsningsuppdatering – april 2020

Det verkar som att MySqlConnector och Pomelo verkligen har tagit fart.

Connector/.NET släppte äntligen ett par versioner efter nästan två år med den senaste, 8.0.19, få 233K nedladdningar.

MySqlConnector å andra sidan fick 496K nedladdningar för version 0.61.0. Mindre uppdateringar är frekventa, med den senaste, 0.63.2, kommer 8 timmar före detta inlägg. Det är förmodligen lite för ofta, men mycket bättre än 2 år.

Jag har inte kontrollerat funktioner eller MySql 8-kompatibilitet än. Om jag var tvungen att välja (vilket jag förmodligen kommer att göra för ett projekt nästa vecka), skulle jag börja med MySqlConnector.

Jag misstänker att Connector/.NET kommer att tvingas erbjuda mycket tätare uppdateringar på gång, för att hålla jämna steg med .NET Core-utgåvor, men det är bara spekulationer just nu.




  1. infoga data från en tabell till en annan i mysql

  2. Flytta data från SQL Server till Oracle upprepade gånger

  3. Jämför rader i samma tabell i mysql

  4. Hur ska jag tackla --secure-file-priv i MySQL?