sql >> Databáze >  >> RDS >> Mysql

Použití MariaDB s Entity Framework

Byl jsem schopen použít MariaDB 10 s Entity Framework, i když to vyžadovalo trochu práce, hlavně proto, že nástroje MySQL jsou trochu zabugované.

Práce s MySQL/MariaDB ve Visual Studiu 2010/2012 ,musíte si nainstalovat MySQL pro Visual Studio pomocí instalátoru MySQL . Použil jsem webovou verzi, protože jsem chtěl stáhnout pouze konektory a rozšíření. Jakmile to uděláte, můžete přidat připojení k MariaDB a vytvořit modely EF.

To však ke spuštění kódu nestačí. Nejprve musíte přidat MySQL Connector pomocí NuGet.

MySQL pro Visual Studio bohužel přidává odkaz na starší verzi poskytovatele (zmíněno zde ) a nelze načíst novější verzi. Abych to vyřešil, přidal jsem do souboru app.config následující sekci:

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

Tím se stará reference nahradí novou. Všimněte si, že jsem použil

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

ne

<remove name="MySql Data Provider"/>

v remove prvek.

V současné době není MySQL pro Visual Studio podporováno ve Visual Studiu 2013

AKTUALIZACE – 2017

Connector/.NET v podstatě stagnuje, se stejnými problémy jako v roce 2013, např. bez opravdových asynchronních volání. „Asynchronní“ volání jsou falešná – běží na samostatných vláknech, čímž maří samotný účel použití async . To samo o sobě jej činí nevhodným pro webové aplikace, kde je potřeba obsloužit co nejvíce požadavků s minimem počet vláken/CPU.

Nevadí podpora .NET Core.

To je důvod, proč si lidé v posledních letech vybudovali své vlastní, skutečně asynchronní poskytovatele. Některé z nejpopulárnějších jsou:

  • MySqlConnector nabízí skutečně asynchronního poskytovatele pro .NET a .NET Core
  • Pomelo nabízí podporu EF Core nad MySQLConnector

Každý s přibližně 100 000 staženími NuGet, častými verzemi a aktivní údržbou.

Nejsou "oficiální", ale rozhodně stojí za vyzkoušení

Aktualizace uzamčení – duben 2020

Zdá se, že MySqlConnector a Pomelo se opravdu rozjely.

Connector/.NET konečně vydal pár verzí po téměř dvou letech s nejnovější verzí 8.0.19 získává 233 000 stahování.

MySqlConnector na druhé straně získal 496 000 ke stažení pro verzi 0.61.0. Drobné aktualizace jsou časté, přičemž nejnovější 0.63.2 přichází 8 hodin před tímto příspěvkem. To je pravděpodobně trochu příliš často, ale mnohem lepší než 2 roky.

Ještě jsem nezkontroloval funkce nebo kompatibilitu MySql 8. Pokud bych si měl vybrat (což pravděpodobně udělám pro projekt příští týden), začal bych s MySqlConnector.

Mám podezření, že Connector/.NET bude nucen nabízet mnohem častější aktualizace, aby držel krok s vydáními .NET Core, ale to je v tuto chvíli pouze spekulace.




  1. jak objednat odpověď JSON na základě vztahu databáze pomocí výmluvného

  2. MYSQL vrací duplicitní řádky

  3. Jaká je správná syntaxe adresy URL JDBC, pokud se používají peněženky Oracle?

  4. Tabulka čištění MySQL z duplicitních záznamů A opětovné propojení FK v závislé tabulce