Mysql
 sql >> Base de Dados >  >> RDS >> Mysql

Usando MariaDB com Entity Framework


Consegui usar o MariaDB 10 com o Entity Framework, embora exigisse um pouco de trabalho, principalmente porque as ferramentas do MySQL são um pouco problemáticas.

Para trabalhar com MySQL/MariaDB no Visual Studio 2010/2012 ,você precisa instalar o MySQL para Visual Studio usando o Instalador do MySQL . Usei a versão Web porque queria apenas baixar os conectores e as extensões. Depois de fazer isso, você pode adicionar conexões ao MariaDB e criar modelos EF.

Isso não é suficiente para executar seu código. Primeiro você precisa adicionar o MySQL Connector usando o NuGet.

Infelizmente, o MySQL para Visual Studio adiciona uma referência a uma versão de provedor mais antiga (mencionada aqui ) e não pode carregar a versão mais recente. Para corrigir isso, adicionei a seguinte seção no meu 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>

Isso substitui a referência antiga por uma nova. Note que eu usei
<remove invariant="MySql.Data.MySqlClient"/>

não
<remove name="MySql Data Provider"/>

no remove elemento.

Atualmente, o MySQL para Visual Studio não tem suporte no Visual Studio 2013

ATUALIZAÇÃO - 2017

O Connector/.NET está essencialmente estagnado, com os mesmos problemas que teve em 2013, por exemplo, nenhuma chamada assíncrona verdadeira. As chamadas "assíncronas" são falsas - elas são executadas em threads separados, anulando o próprio propósito de usar async . Isso por si só o torna inadequado para aplicativos da Web, onde se deseja atender o maior número possível de solicitações usando o mínimo número de threads/CPU.

Não importa o suporte do .NET Core.

É por isso que nos últimos anos as pessoas construíram seus próprios provedores verdadeiramente assíncronos. Alguns dos mais populares são:
  • MySqlConnector oferece um provedor verdadeiramente assíncrono para .NET e .NET Core
  • Pomelo oferece suporte ao EF Core além do MySQLConnector

Com cerca de 100 mil downloads do NuGet cada, versões frequentes e manutenção ativa.

Eles não são "oficiais", mas definitivamente vale a pena tentar

Atualização de bloqueio - abril de 2020

Parece que o MySqlConnector e o Pomelo realmente decolaram.

O Connector/.NET finalmente lançou algumas versões depois de quase dois anos com o mais recente, 8.0.19, obtendo 233K Transferências.

MySqlConnector por outro lado, tem 496K downloads para a versão 0.61.0. Atualizações menores são frequentes, com a mais recente, 0.63.2, chegando 8 horas antes desta postagem. Isso é provavelmente um pouco frequente, mas muito melhor do que 2 anos.

Ainda não verifiquei os recursos ou a compatibilidade do MySql 8. Se eu tivesse que escolher (o que provavelmente farei para um projeto na próxima semana), começaria com MySqlConnector.

Suspeito que o Connector/.NET será forçado a oferecer atualizações muito mais frequentes, para acompanhar os lançamentos do .NET Core, mas isso é apenas especulação neste momento.