Como utilizar Entity Framework com MySQL em ambientes Medium-Trust

Como utilizar Entity Framework com MySQL em ambientes Medium-Trust

Boa noite caros desenvolvedores,

Alguns ambientes de hospedagem estão sendo configurados para rodar com nível de segurança Medium-Trust.

O problema é que alguns assemblies como o 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 seguintes passos:
  1. Baixar o MySQL Connector 6.3.9 através do link (http://dev.mysql.com/downloads/connector/net/6.3.html#downloads);
  2. Se já possuir uma versão instalada do MySQL Connector, remova, e depois instale o pacote 6.3.9;
  3. Faça referência aos assemblies: MySQL.Data, MySQL.Data.Entity e MySQL.Web no projeto Entity Framework, e no seu projeto MVC, 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 datetime, sendo assim basta você abrir o edmx via XML, e remover o atributo Precision="0" de todos os campos datetime.
  5. Insira o código abaixo no seu Web.Config, pois em muitos casos mesmo copiando os assemblies MySQL para a pasta bin do servidor, ele ainda continua puxando do GAC, esse código vai liberar qualquer configuração de Provider e vai utilizar o seu assembly.
  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>
Acredito que seguindo esses passos, sua aplicação voltará a funcionar normalmente.

Abraço,

Lúcio Rogério
Classificar por: Data da Publicação | Mais Recente | Mais Úteis
Comentários
  • À partir do .Net Framework 4.0, a Microsoft modificou um componente interno do chamado CAS (Code Access Security), que é quem determina como as classes podem acessar umas às outras.

    Essa modificação faz com que algumas aplicações parem de funcionar exibindo a seguinte mensagem de erro: "System.Security.SecurityException: That assembly does not allow partially trusted callers".

    Para contornar esse erro, você deve adicionar o atributo AllowPartiallyTrusted no arquivo AssemblyInfo.cs.

    • Acesse seu site no Visual Studio

    • Navegue até Projeto > Properties > AssemblyInfo.cs

    • No final do arquivo e adicione as linhas abaixo

    // Ajuste devido ao .Net Framework 4.0

    // msdn.microsoft.com/.../system.security.allowpartiallytrustedcallersattribute.aspx

    [assembly: System.Security.AllowPartiallyTrustedCallers]

    • Recompile seu projeto

    ;)

    abraço!

Página 1 de 1 (1 itens)