sql >> Database >  >> RDS >> Mysql

MariaDB gebruiken met Entity Framework

Ik kon MariaDB 10 gebruiken met Entity Framework, hoewel het wat werk vergde, vooral omdat de MySQL-tools een beetje buggy zijn.

Werken met MySQL/MariaDB in Visual Studio 2010/2012 ,moet u MySQL voor Visual Studio installeren met behulp van MySQL-installatieprogramma . Ik gebruikte de webversie omdat ik alleen de connectoren en de extensies wilde downloaden. Zodra je dit hebt gedaan, kun je verbindingen toevoegen aan MariaDB en EF-modellen maken.

Dit is echter niet genoeg om uw code uit te voeren. Eerst moet u de MySQL-connector toevoegen met NuGet.

Helaas voegt MySQL voor Visual Studio een verwijzing toe naar een oudere providerversie (vermeld hier ) en kan de nieuwere versie niet laden. Om dit op te lossen, heb ik de volgende sectie toegevoegd in mijn 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>

Hiermee wordt de oude referentie vervangen door een nieuwe. Merk op dat ik

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

niet

<remove name="MySql Data Provider"/>

in de remove element.

Momenteel wordt MySQL voor Visual Studio niet ondersteund in Visual Studio 2013

UPDATE - 2017

Connector/.NET stagneert in wezen, met dezelfde problemen als in 2013, bijvoorbeeld geen echte asynchrone oproepen. De "async"-aanroepen zijn nep - ze worden uitgevoerd op afzonderlijke threads, waardoor het doel van het gebruik van async teniet wordt gedaan . Dat alleen al maakt het ongeschikt voor webapplicaties, waar men zoveel mogelijk verzoeken wil server met het minimum aantal threads/CPU.

Maakt niet uit over .NET Core-ondersteuning.

Daarom hebben mensen de afgelopen jaren hun eigen, echt asynchrone providers gebouwd. Enkele van de meer populaire zijn:

  • MySqlConnector biedt een echt asynchrone provider voor .NET en .NET Core
  • Pomelo biedt EF Core-ondersteuning bovenop MySQLConnector

Met elk ongeveer 100.000 NuGet-downloads, frequente versies en actief onderhoud.

Ze zijn niet "officieel", maar zeker het proberen waard

Lockdown-update - april 2020

Het lijkt erop dat MySqlConnector en Pomelo echt van de grond zijn gekomen.

Connector/.NET heeft eindelijk een aantal versies uitgebracht na bijna twee jaar met de laatste, 8.0.19, 233K downloads.

MySqlConnector aan de andere kant, kreeg 496K downloads voor versie 0.61.0. Kleine updates komen regelmatig voor, met de laatste 0.63.2 8 uur voor dit bericht. Dat is waarschijnlijk een beetje te vaak, maar veel beter dan 2 jaar.

Ik heb de functies of MySql 8-compatibiliteit nog niet gecontroleerd. Als ik echter zou moeten kiezen (wat ik waarschijnlijk volgende week voor een project zal doen), zou ik beginnen met MySqlConnector.

Ik vermoed dat Connector/.NET gedwongen zal worden om veel frequentere updates aan te bieden, om gelijke tred te houden met .NET Core-releases, maar dat is op dit moment slechts speculatie.




  1. mysqldump via SSH naar lokale computer

  2. Hoe maak je een offline app voor internationalisering:bouw de projectstructuur

  3. Ongeldige PathExpression. Moet een StateFieldPathExpression zijn

  4. MacOS kan MySQL Server niet starten