Mysql
 sql >> Base de données >  >> RDS >> Mysql

Utiliser MariaDB avec Entity Framework

J'ai pu utiliser MariaDB 10 avec Entity Framework bien que cela ait demandé un peu de travail principalement parce que les outils MySQL sont un peu bogués.

Pour travailler avec MySQL/MariaDB dans Visual Studio 2010/2012 , vous devez installer MySQL pour Visual Studio en utilisant Installateur MySQL . J'ai utilisé la version Web car je voulais uniquement télécharger les connecteurs et les extensions. Une fois cela fait, vous pouvez ajouter des connexions à MariaDB et créer des modèles EF.

Ce n'est cependant pas suffisant pour exécuter votre code. Vous devez d'abord ajouter le connecteur MySQL à l'aide de NuGet.

Malheureusement, MySQL pour Visual Studio ajoute une référence à une ancienne version du fournisseur (mentionnée ici ) et ne peut pas charger la version la plus récente. Pour résoudre ce problème, j'ai ajouté la section suivante dans mon 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>

Cela remplace l'ancienne référence par une nouvelle. Notez que j'ai utilisé

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

pas

<remove name="MySql Data Provider"/>

dans le remove élément.

Actuellement, MySQL pour Visual Studio n'est pas pris en charge dans Visual Studio 2013

MISE À JOUR - 2017

Connector/.NET est essentiellement stagnant, avec les mêmes problèmes qu'en 2013, par exemple pas de véritables appels asynchrones. Les appels "async" sont faux - ils sont exécutés sur des threads séparés, ce qui va à l'encontre du but même d'utiliser async . Cela seul le rend inadapté aux applications Web, où l'on souhaite traiter autant de requêtes que possible en utilisant le minimum nombre de threads/CPU.

Peu importe la prise en charge de .NET Core.

C'est pourquoi, au cours des dernières années, les gens ont construit leurs propres fournisseurs véritablement asynchrones. Certains des plus populaires sont :

  • MySqlConnector offre un fournisseur véritablement asynchrone pour .NET et .NET Core
  • Pomelo offre la prise en charge d'EF Core en plus de MySQLConnector

Avec environ 100 000 téléchargements NuGet chacun, des versions fréquentes et une maintenance active.

Ils ne sont pas "officiels", mais valent vraiment la peine d'être essayés

Mise à jour sur le confinement – Avril 2020

Il semble que MySqlConnector et Pomelo aient vraiment décollé.

Connector/.NET a finalement publié quelques versions après presque deux ans avec le dernier, 8.0.19, obtenant 233K téléchargements.

MySqlConnector d'autre part, j'ai obtenu 496K téléchargements pour la version 0.61.0. Les mises à jour mineures sont fréquentes, la dernière, la 0.63.2, venant 8 heures avant ce post. C'est probablement un peu trop fréquent, mais bien mieux que 2 ans.

Je n'ai pas encore vérifié les fonctionnalités ou la compatibilité MySql 8. Si je devais choisir (ce que je ferai probablement pour un projet la semaine prochaine), je commencerais par MySqlConnector.

Je soupçonne que Connector/.NET sera obligé d'offrir des mises à jour beaucoup plus fréquentes, pour suivre le rythme des versions de .NET Core, mais ce n'est que de la spéculation à ce stade.