Conecte-se conosco

Inglês online

Como utilizar Entity Framework 6 (EF6) com o MySQL no Godaddy, Winhost e Locaweb?

Como utilizar Entity Framework 6 (EF6) com o MySQL no Godaddy, Winhost e Locaweb?

Como usar o EF6 (Entity Framework 6) com o MySQL na hospedagem do Godaddy, Winhost e Locaweb?

Há algumas semanas retomei um projeto em ASP.NET utilizando o Entity Framework 6 (EF6) com o MySQL. Utilizei a ferramenta  Microsoft Visual Studio 2013 para desenvolver o projeto, um aplicativo Web ASP.NET (.NET Framework 4). Porém, depois de terminado o projeto e funcionando perfeitamente na minha máquina local, quem diz que eu conseguia fazer rodar a aplicação depois de publicar em alguma hospedagem? Tentei publicar nessas empresas de hospedagem: Godaddy, Winhost e Locaweb.

Depois de muitas tentativas, pesquisas no Google sobre o problema, uma surra atrás da outra, um couro lascado!, cheguei até a baixar o Visual Studio 2017 Community e nada. No mesmo dia que liguei pro cliente dizendo que não conseguia entregar o projeto a contento, consegui encontrar a solução, pelo menos para o Godaddy e o Winhost, e aí já me dei por satisfeito. Porém, há uma explicação do porque não funciona na Locaweb e há uma sugestão do que fazer pra tentar contornar o problema, apesar de não ter testado, porque a essa altura eu já estava de saco cheio.

Resolvi então descrever um a passo a passo de como iniciar um projeto simples do zero no Visual Studio 2013, que acessa um banco de dados MySQL, utilizando o EF6 (Entity Framework 6). Incluí apenas uma tabela do banco de dados do MySQL ao modelo de dados da entidade (o arquivo .edmx) e o liguei a um componente da página para exibir os dados, semelhante a uma tabela (o Gridview). Espero que esse artigo venha a ser útil a quem estiver com esse problema ou estiver pensando em usar o EF6 (Entity Framework 6) num projeto ASP.NET com o MySQL.

Para iniciar os passos abaixo eu levo em conta que você já tem o Microsoft Visual 2013 instalado em sua máquina, e já trabalha com a ferramenta. Senão, então esse é o 1º passo: instalar o MS VS 2013 antes de começar os demais passos abaixo.

  1. Baixe do site dev.mysql.com o instalador do MySQL NET/Connector 6.9.9 e instale na máquina.
  2. Baixe do site dev.mysql.com o MySQL for Visual Studio 2.0.5 e instale na máquina.
  3. Inicie o Microsoft o Visual Studio 2013 e crie um projeto novo, um aplicativo Web ASP.NET (.NET Framework) vazio.
  4. Certifique-se de usar o .NET Framework versão 4.0, entre na propriedade do projeto para checar e modificar a versão se precisar.
  5. Instale os seguintes pacotes pelo prompt do NuGet no projeto e, depois em referências do projeto lembre-se de marcar a opção “Copy Local”:

Install-Package EntityFramework (Versão 6.1.3)

Install-Package MySql.Data.Entity (Versão 6.9.9)

Install-Package Microsoft.AspNet.EntityDataSource (Versão 6.0.0)

Install-Package Microsoft.AspNet.DynamicData.EFProvider (Versão 6.0.0)

 

(Execute o projeto para copiar as DLL para a pasta “bin”)

 

A instalação desses pacotes incluirá as seguintes DLLs ao projeto:

EntityFramework.SqlServer.dll

Microsoft.AspNet.DynamicData.EFProvider.dll

Microsoft.AspNet.EntityDataSource.dll

Microsoft.CodeDom.Providers.DotNetCompilerPlatform.dll

MySql.Data.dll

MySql.Data.Entity.EF6.dll

WebApplication1.dll (Depois de compilado o projeto)

  1. Adicione um novo item “ADO.NET Entity Data Model”, nome “Model1”, configure o acesso ao banco de dados do MySQL com IP do servidor ou endereço, usuário e senha, e só inclua uma tabela para teste, de preferência uma com poucas linhas ou registros. No meu caso usei uma tabela chamada ‘cadastro’ com poucos registros e 03 campos: nome, email e telefone.
Tabela em ASP e EF 6

Tabela em ASP e EF 6

  1. Adicione um novo formulário Web (página .aspx) ao projeto, nome “WebForm1.aspx” e a defina como a página padrão.
  2. Arraste 02 componentes da caixa de ferramentas para a página, um “Gridview”, nome “Gridview1” e um “EntityDataSource”, nome “EntityDataSource1”.
  3. Configure a fonte de dados do “EntityDataSource1” com a mesma conexão criada para o MySQL e usada no componente “Model1”, e selecione a tabela ‘cadastro’ já configurada no modelo de dados.
Assistente do Entity Data Model

Assistente do Entity Data Model

  1. Conecte o “EntityDataSource1” à propriedade fonte de dados do “Gridview1” e habilite a paginação.
  2. Modifique o arquivo de configuração do projeto, o arquivo “web.config” para que fique assim:

<?xml version=1.0 encoding=utf-8?>

<!–

  For more information on how to configure your
ASP.NET application, please visit

  http://go.microsoft.com/fwlink/?LinkId=169433

  –>

<configuration>

  <configSections>

    <section name=entityFramework type=System.Data.Entity.Internal.ConfigFile.EntityFrameworkSection,
EntityFramework, Version=6.0.0.0, Culture=neutral,
PublicKeyToken=b77a5c561934e089
requirePermission=false />

    <!– For
more information on Entity Framework configuration, visit http://go.microsoft.com/fwlink/?LinkID=237468
–>

  </configSections>

  <system.web>

    <trust level=Full />

    <customErrors mode=Off />

    <compilation targetFramework=4.0 />

    <pages>

      <controls>

        <add tagPrefix=ef assembly=Microsoft.AspNet.EntityDataSource namespace=Microsoft.AspNet.EntityDataSource />

      </controls>

    </pages>

  </system.web>

  <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.9.9.0 />

    </DbProviderFactories>

  </system.data>

  <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
/>

    </providers>

  </entityFramework>

  <connectionStrings>

    <add name=consultnameEntities connectionString=metadata=res://*/Model1.csdl|res://*/Model1.ssdl|res://*/Model1.msl;provider=MySql.Data.MySqlClient;provider
connection string=’server=###.###.###.###;user id=nomedousuario;persistsecurityinfo=True;includesecurityasserts=true;database=nomedobdmysql;password=
&quot;********&quot; providerName=System.Data.EntityClient />

    <add name=DbContext providerName=MySql.Data.MySqlClient connectionString=server=###.###.###.###;user id=nomedousuario;persistsecurityinfo=True;includesecurityasserts=true;database=nomedobdmysql;password=&quot;********&quot; />

  </connectionStrings>

</configuration>

12. Salve e execute (f5) o projeto, e aí será exibida uma tabela HTML no navegador de internet com o conteúdo da tabela “cadastro”. Se os dados da tabela não forem exibidos ou aparecer algum erro, repasse os passos acima, talvez tenha esquecido alguma coisa.

Provedor de dados do MySQL

Provedor de dados do MySQL

13. Publique os seguintes arquivos do projeto no provedor de hospedagem para funcionar na internet agora (ftp://ftp.seudominio.com.br):

Na raiz:

  • Web.config
  • WebForm1.aspx
  • WebForm1.aspx.cs

Na pasta “bin”:

  • EntityFramework.dll
  • EntityFramework.SqlServer.dll
  • Microsoft.AspNet.DynamicData.EFProvider.dll
  • Microsoft.AspNet.EntityDataSource.dll
  • Microsoft.CodeDom.Providers.DotNetCompilerPlatform.dll
  • MySql.Data.dll
  • MySql.Data.Entity.EF6.dll
  • WebApplication1.dll

E pronto, navegue no seu site para testar!

Porque esses passos do Projeto ASP.NET com MySQL e EF6 não funcionam na Locaweb ou em outros provedores de hospedagem?

Alguns ambientes de hospedagem estão sendo configurados para rodar sem aceitar atribuição de nível de confiança, e é esse o caso da Locaweb. A linha em amarelo “<trust level=”Full” />” do “web.config” causa um erro de segurança no provedor de hospedagem da Locaweb e, testei também com o nível médio “<trust level=”Medium” />” e nada.


Cansado de procurar emprego?
DEIXE O GOOGLE PROCURAR POR VOCÊ!
Aumente sua chance de conseguir emprego em 1000%. Clique e Confira

Também acontece que algumas DLL’s (bibliotecas) como a “MySQL.Data” após a versão 6.3.9 não são compatíveis com esse nível de segurança, gerando diversas exceções na aplicação, e impossibilitando a integração entre o MySQL e o Entity Framework.

Para solucionar esse problema será necessário seguir os esses passos:

  1. Baixe o MySQL Connector 6.3.9 através no site do desenvolver do MySQL do dev.mysql.com.
  2. Se já possuir uma versão instalada do MySQL Connector, remova-a, e depois instale o pacote 6.3.9.
  3. Faça referência às bibliotecas: “MySQL.Data”, “MySQL.Data.Entity” e “MySQL.Web” no projeto Entity Framework e lembre-se de marcar a opção “Copy Local”;
  4. Pode ser que o seu arquivo .edmx reclame do atributo Precision=”0″ para campos do tipo data (datetime), sendo assim basta você abrir o arquivo .edmx via XML, e remover o atributo Precision=”0″ de todos os campos tipo data (datetime).
  5. Insira o código abaixo no seu “web.config”, pois em muitos casos mesmo copiando as DLL’s do MySQL para a pasta “bin” do provedor, ele ainda continua puxando do GAC, então esse código vai liberar qualquer configuração de “Provider” e irá utilizar a sua DLL (biblioteca).
  6. <system.data>

      <DbProviderFactories>

        <clear />

        <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.3.9.0, Culture=neutral,
    PublicKeyToken=c5687fc88969c44d
    />

      </DbProviderFactories>

    </system.data>

Eu particularmente não testei esses passos pra ver se funciona o EF com MySQL na Locaweb porém, dependendo do seu nível de desespero, acredito que vale a pena tentar. Se o suporte da Locaweb não quiser mudar o nível de segurança do seu domínio então, em último caso você já sabe que funciona na Godaddy e Winhost.

Receba Artigos e Vagas por E-mail

Insira seu e-mail:

1 Comentário

1 Comentário

  1. caio uechi

    22 de dezembro de 2018 a 08:42

    To exatamente varado, 07 horas da madrugada tentando resolver esse pepino gracas a loca web. Ja tentei todas as versoes estaveis de connector que vc pode imaginar =( vou tentar essa 6.3.9 agora.

Deixe um comentário

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *

Propaganda

Posts Recentes

Ganhar dinheiro com Blog Ganhar dinheiro com Blog
Dinheiro2 meses ago

Como ganhar dinheiro com blog

VEJA TAMBÉM:  Salário Mínimo 2019  -  Salário Família 2019  -  Tabela de Cargos e Salários 2019 Nos dias de hoje,...

Dinheiro Extra Dinheiro Extra
Dinheiro2 meses ago

Dinheiro Extra

VEJA TAMBÉM:  Salário Mínimo 2019  -  Salário Família 2019  -  Tabela de Cargos e Salários 2019 Na hora de organizar...

Dinheiro2 meses ago

Finanças Pessoais

VEJA TAMBÉM:  Salário Mínimo 2019  -  Salário Família 2019  -  Tabela de Cargos e Salários 2019 Finanças pessoais para muitos, tornou-se...

Crédito Pessoal Crédito Pessoal
Dinheiro2 meses ago

Crédito Pessoal

VEJA TAMBÉM:  Salário Mínimo 2019  -  Salário Família 2019  -  Tabela de Cargos e Salários 2019 O crédito pessoal nada...

Dinheiro2 meses ago

Empréstimo Pessoal Online

VEJA TAMBÉM:  Salário Mínimo 2019  -  Salário Família 2019  -  Tabela de Cargos e Salários 2019 O surgimento de muitas...

Gerenciador Financeiro Gerenciador Financeiro
Dinheiro2 meses ago

Gerenciador Financeiro

VEJA TAMBÉM:  Salário Mínimo 2019  -  Salário Família 2019  -  Tabela de Cargos e Salários 2019 Controlar com cuidado o...

Dinheiro2 meses ago

Simulador de Financiamento

VEJA TAMBÉM:  Salário Mínimo 2019  -  Salário Família 2019  -  Tabela de Cargos e Salários 2019 Simular um financiamento é...

Empréstimo Pessoal Empréstimo Pessoal
Dinheiro2 meses ago

Empréstimo Pessoal

VEJA TAMBÉM:  Salário Mínimo 2019  -  Salário Família 2019  -  Tabela de Cargos e Salários 2019 O empréstimo pessoal sempre...

Dinheiro2 meses ago

Como Juntar Dinheiro

VEJA TAMBÉM:  Salário Mínimo 2019  -  Salário Família 2019  -  Tabela de Cargos e Salários 2019 Muitas vezes nossos sonhos...

O que fazer para Ganhar Dinheiro O que fazer para Ganhar Dinheiro
Dinheiro2 meses ago

O que fazer para Ganhar Dinheiro

VEJA TAMBÉM:  Salário Mínimo 2019  -  Salário Família 2019  -  Tabela de Cargos e Salários 2019 Nem sempre a renda...

Propaganda

Trending