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

Como uso o Entity Framework 6 com MySQL no ASP.NET 5?


Como o Web.config não é mais usado com ASP.NET 5, você precisa usar configuração baseada em código para configurá-lo em vez disso. Para fazer isso, crie uma nova classe que herda de DbConfiguration:
public class MyDbConfiguration : DbConfiguration
{
    public MyDbConfiguration()
    {
        // Register ADO.NET provider
        var dataSet = (DataSet)ConfigurationManager.GetSection("system.data");
        dataSet.Tables[0].Rows.Add(
            "MySQL Data Provider",
            ".Net Framework Data Provider for MySQL",
            "MySql.Data.MySqlClient",
            typeof(MySqlClientFactory).AssemblyQualifiedName
        );

        // Register Entity Framework provider
        SetProviderServices("MySql.Data.MySqlClient", new MySqlProviderServices());
        SetDefaultConnectionFactory(new MySqlConnectionFactory());
    }
}

A primeira parte da configuração é um hack para registrar o provedor ADO.NET em tempo de execução, adicionando dinamicamente uma nova entrada de configuração ao system.data seção. Isso é muito hacky, mas parece funcionar corretamente.

Adicione a string de conexão ao config.json em vez de Web.config :
{
  "Data": {
    "DefaultConnection": {
      "ConnectionString": "Server=localhost; Database=test; Uid=test; Pwd=password;"
    }
  }
}

Modifique o DbContext para usar a configuração correta e a string de conexão:
[DbConfigurationType(typeof(MyDbConfiguration))]
public class MyContext : DbContext
{
    public MyContext(IConfiguration config)
      : base(config["Data:DefaultConnection:ConnectionString"])
      {
      }
      // ...
}

Registrar MyContext no contêiner de injeção de dependência em Startup.cs :
public void ConfigureServices(IServiceCollection services)
{
    // ...
    services.AddScoped<MyContext>();
}

Então você pode simplesmente usar a injeção de construtor para obter MyContext em seus controladores.

Mais detalhes em minha postagem no blog em http://dan.cx/ 2015/08/entity-framework-6-mysql-aspnet e um projeto de amostra em https://github.com/Daniel15/EFExample