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

Não é possível conectar-se ao mysql do visual studio 2015


Para que o VS 2015 se conecte ao MySql, você precisa usar uma versão posterior das bibliotecas do MySql. Embora isso pareça uma resposta bastante simples, com toda a honestidade, encontrei vários problemas ao longo do caminho. Com isso em mente, vou escrever o processo 1 que tem funcionado consistentemente para mim no que diz respeito a fazer o EF trabalhar com o MySql e o VS2015. Então, sem mais delongas, aqui estão os passos que tenho tomado para que isso funcione.

1) Verifique se a instalação do conector MySql está atualizada

2) Crie seu projeto web

3) Abra o Nuget

4) Instale o Entity Framework

5) Procure por MySql

6) Instale o MySql.Data

7) Instale MySql.Data.Entity

8) Instale MySql.Data.Entities

9) Instale o MySql.Web

10) Vá para as referências do projeto e exclua MySql.Data.Entity.EF6

11) Verifique as versões das bibliotecas MySql.Data e MySql.Web. Se eles estiverem abaixo de 6.9.6, exclua-os também

12) Adicione uma nova referência navegando até o local de instalação do conector mysql para sua versão do .NET framework (o meu é C:\Program Files (x86)\MySQL\Connector.NET 6.9\Assemblies\v4.5) e pegando o MySql.Data.Entity.EF6.dll (minha versão é 6.9.6, lembre-se disso quando mudarmos o web.config posteriormente)

13) Se as outras bibliotecas também forem versões mais antigas, adicione referências a elas navegando até a pasta de pacotes em sua solução e pegando os arquivos de suas respectivas pastas. Eu normalmente não tenho que fazer isso.

14) Agora o Web.config precisará ser editado. A primeira etapa é substituir a seção de estrutura de entidade por este código (altere o número da versão para sua versão atual. Observe que encontrei este snippet na Web há algumas semanas e não tenho o link original. Peço desculpas ao original cartaz desta informação.)
<entityFramework>
<defaultConnectionFactory type="MySql.Data.Entity.MySqlConnectionFactory, MySql.Data.Entity.EF6" />
<providers>
<provider invariantName="MySql.Data.MySqlClient" type="MySql.Data.MySqlClient.MySqlProviderServices, MySql.Data.Entity.EF6, Version=6.9.6.0, Culture=neutral, PublicKeyToken=c5687fc88969c44d" />
</providers>
</entityFramework>

15) Certifique-se de que sua seção DbProviderFactories corresponda
<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.9.6.0, Culture=neutral, PublicKeyToken=c5687fc88969c44d" />
</DbProviderFactories>

16) Salve e construa

Não tenho certeza de quantas dessas etapas são realmente necessárias, mas depois de finalmente consegui-lo, tive que realmente fazer algum trabalho e não tive tempo de restringir ainda mais as coisas. Espero que isso faça você se mexer.

P.S. Se depois de tudo isso você passar pelo assistente e ele simplesmente desaparecer antes de mostrar as tabelas no banco de dados para criar entidades, pode ser um dos três problemas que encontrei ao longo do caminho. O servidor de banco de dados não pode ser contatado. O usuário não tem as permissões necessárias no banco de dados. A versão errada de MySql.Data.Entity.EF6 foi adicionada como referência ou o número da versão está errado no web.config. Se eu pegar esse arquivo do diretório de pacotes da minha solução, muitas vezes me deparo com esse problema de assistente abortado sem mensagem de erro. Agarrá-lo no diretório de instalação do MySql funcionou bem para mim todas as vezes.