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.

COMECE A GANHAR DINHEIRO SEM SAIR DE CASA COM UMA TÉCNICA QUE POUCOS CONHECEM...
15 dias e um celular é tudo que você precisa para começar a vender agora e se tornar dono do seu próprio negócio. ACESSE: WIBOX

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”:
Leia  Como se diz "pão-duro" em inglês?

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):

Leia  Como se diz "mudar de ideia" em inglês?

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.

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.

Leia  Como se diz "tropeçar" em inglês?
Continue lendo
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 Wibox

Posts Recentes

Ganhar dinheiro com Blog Ganhar dinheiro com Blog
Dinheiro7 meses ago

Como ganhar dinheiro com blog

Nos dias de hoje, ganhar dinheiro com blog, trabalhando unicamente no conforto de sua residência pode se tornar uma realidade....

Dinheiro Extra Dinheiro Extra
Dinheiro7 meses ago

Dinheiro Extra

Na hora de organizar as finanças, sabemos que qualquer adicional no final do mês já é capaz de fazer uma...

Dinheiro7 meses ago

Finanças Pessoais

Finanças pessoais para muitos, tornou-se sinônimo de pesadelo. A boa notícia é que não há nenhum segredo oculto para administrar essa...

Crédito Pessoal Crédito Pessoal
Dinheiro7 meses ago

Crédito Pessoal

O crédito pessoal nada mais é do que um empréstimo realizado para pessoas físicas. Diversas empresas e instituições bancárias oferecem...

Dinheiro7 meses ago

Empréstimo Pessoal Online

O surgimento de muitas empresas de crédito propiciaram vantagens ao trabalhador endividado. Uma delas é o empréstimo pessoal, que o...

Gerenciador Financeiro Gerenciador Financeiro
Dinheiro7 meses ago

Gerenciador Financeiro

Controlar com cuidado o próprio dinheiro é a melhor forma de saber onde os gastos estão indo, como melhorar e...

Dinheiro7 meses ago

Simulador de Financiamento

Simular um financiamento é a melhor forma de saber o quanto você terá que pagar em cada parcela, estabelecer a...

Empréstimo Pessoal Empréstimo Pessoal
Dinheiro7 meses ago

Empréstimo Pessoal

O empréstimo pessoal sempre é uma solução buscada em momentos de grande sufoco e apesar de ser uma alternativa muito...

Dinheiro7 meses ago

Como Juntar Dinheiro

Muitas vezes nossos sonhos demandam de certa quantia de dinheiro para serem realizados. No entanto, juntar esse valor parece ser...

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

O que fazer para Ganhar Dinheiro

Nem sempre a renda fixa do trabalho é o suficiente para alcançar objetivos financeiros. Por isso, muitas pessoas buscam uma...

Propaganda Wibox

Tendências