sql >> Base de Datos >  >> RDS >> Mysql

Usando MariaDB con Entity Framework

Pude usar MariaDB 10 con Entity Framework aunque requirió un poco de trabajo principalmente porque las herramientas de MySQL tienen algunos errores.

Para trabajar con MySQL/MariaDB en Visual Studio 2010/2012 , debe instalar MySQL para Visual Studio usando Instalador MySQL . Usé la versión web porque solo quería descargar los conectores y las extensiones. Una vez que haga esto, puede agregar conexiones a MariaDB y crear modelos EF.

Sin embargo, esto no es suficiente para ejecutar su código. Primero debe agregar el conector MySQL usando NuGet.

Desafortunadamente, MySQL para Visual Studio agrega una referencia a una versión anterior del proveedor (mencionada aquí ) y no puede cargar la versión más reciente. Para solucionar esto, agregué la siguiente sección en mi 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>

Esto reemplaza la referencia anterior por una nueva. Tenga en cuenta que usé

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

no

<remove name="MySql Data Provider"/>

en el remove elemento.

Actualmente, MySQL para Visual Studio no es compatible con Visual Studio 2013

ACTUALIZACIÓN - 2017

Connector/.NET está esencialmente estancado, con los mismos problemas que tuvo en 2013, por ejemplo, sin verdaderas llamadas asincrónicas. Las llamadas "asincrónicas" son falsas:se ejecutan en subprocesos separados, anulando el propósito mismo de usar async . Eso por sí solo lo hace inadecuado para aplicaciones web, donde uno quiere atender tantas solicitudes como sea posible utilizando el mínimo número de subprocesos/CPU.

No importa la compatibilidad con .NET Core.

Es por eso que en los últimos años la gente ha creado sus propios proveedores verdaderamente asincrónicos. Algunos de los más populares son:

  • MySqlConnector ofrece un proveedor verdaderamente asíncrono para .NET y .NET Core
  • Pomelo ofrece compatibilidad con EF Core además de MySQLConnector

Con alrededor de 100 000 descargas de NuGet cada una, versiones frecuentes y mantenimiento activo.

No son "oficiales", pero definitivamente vale la pena probarlos

Actualización de bloqueo:abril de 2020

Parece que MySqlConnector y Pomelo realmente han despegado.

Connector/.NET finalmente lanzó un par de versiones después de casi dos años con la última, 8.0.19, obteniendo 233K descargas.

MySqlConnector por otro lado, obtuve 496K descargas para la versión 0.61.0. Las actualizaciones menores son frecuentes, con la última, 0.63.2, 8 horas antes de esta publicación. Probablemente sea demasiado frecuente, pero mucho mejor que 2 años.

Todavía no he comprobado las características ni la compatibilidad con MySql 8. Sin embargo, si tuviera que elegir (lo que probablemente haré para un proyecto la próxima semana), comenzaría con MySqlConnector.

Sospecho que Connector/.NET se verá obligado a ofrecer actualizaciones mucho más frecuentes para mantenerse al día con las versiones de .NET Core, pero eso es solo especulación en este momento.