Mysql
 sql >> Database >  >> RDS >> Mysql

Utilizzo di MariaDB con Entity Framework

Sono stato in grado di utilizzare MariaDB 10 con Entity Framework anche se ha richiesto un po' di lavoro principalmente perché gli strumenti MySQL sono un po' difettosi.

Per lavorare con MySQL/MariaDB in Visual Studio 2010/2012 , devi installare MySQL per Visual Studio utilizzando MySQL Installer . Ho usato la versione Web perché volevo solo scaricare i connettori e le estensioni. Fatto ciò, puoi aggiungere connessioni a MariaDB e creare modelli EF.

Tuttavia, questo non è sufficiente per eseguire il codice. Per prima cosa devi aggiungere MySQL Connector usando NuGet.

Sfortunatamente, MySQL per Visual Studio aggiunge un riferimento a una versione precedente del provider (menzionata qui ) e non riesco a caricare la versione più recente. Per risolvere questo problema, ho aggiunto la seguente sezione nel mio 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>

Questo sostituisce il vecchio riferimento con uno nuovo. Nota che ho usato

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

non

<remove name="MySql Data Provider"/>

nel remove elemento.

Attualmente, MySQL per Visual Studio non è supportato in Visual Studio 2013

AGGIORNAMENTO - 2017

Connector/.NET è essenzialmente stagnante, con gli stessi problemi che ha avuto nel 2013, ad esempio nessuna vera chiamata asincrona. Le chiamate "asincrone" sono false:vengono eseguite su thread separati, vanificando lo scopo stesso dell'utilizzo di async . Questo da solo lo rende inadatto per le applicazioni web, dove si desidera inviare quante più richieste possibili utilizzando il minimo numero di thread/CPU.

Non preoccuparti del supporto per .NET Core.

Ecco perché negli ultimi anni le persone hanno creato i propri provider veramente asincroni. Alcuni dei più popolari sono:

  • MySqlConnector offre un provider veramente asincrono per .NET e .NET Core
  • Pomelo offre il supporto EF Core oltre a MySQLConnector

Con circa 100.000 download di NuGet ciascuno, versioni frequenti e manutenzione attiva.

Non sono "ufficiali", ma vale sicuramente la pena provare

Aggiornamento sul blocco - aprile 2020

Sembra che MySqlConnector e Pomelo siano davvero decollati.

Connector/.NET ha finalmente rilasciato un paio di versioni dopo quasi due anni con l'ultimo, 8.0.19, ottenendo 233K download.

MySqlConnector d'altra parte, ha ottenuto 496K download per la versione 0.61.0. Gli aggiornamenti minori sono frequenti, con l'ultimo, 0.63.2 in arrivo 8 ore prima di questo post. Probabilmente è un po' troppo frequente, ma molto meglio di 2 anni.

Non ho ancora verificato le funzionalità o la compatibilità di MySql 8. Se dovessi però scegliere (cosa che probabilmente farò per un progetto la prossima settimana), inizierei con MySqlConnector.

Sospetto che Connector/.NET sarà costretto a offrire aggiornamenti molto più frequenti in corso, per stare al passo con le versioni di .NET Core, ma a questo punto si tratta solo di speculazioni.