sql >> Base de Datos >  >> RDS >> Mysql

¿Cómo uso Entity Framework 6 con MySQL en ASP.NET 5?

Dado que Web.config ya no se usa con ASP.NET 5, debe usar configuración basada en código para configurarlo en su lugar. Para hacerlo, cree una nueva clase que herede 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());
    }
}

La primera parte de la configuración es un truco para registrar el proveedor ADO.NET en tiempo de ejecución, agregando dinámicamente una nueva entrada de configuración a system.data sección. Esto es muy complicado, pero parece funcionar correctamente.

Agregue la cadena de conexión a config.json en lugar de Web.config :

{
  "Data": {
    "DefaultConnection": {
      "ConnectionString": "Server=localhost; Database=test; Uid=test; Pwd=password;"
    }
  }
}

Modificar el DbContext para usar la configuración correcta y la cadena de conexión:

[DbConfigurationType(typeof(MyDbConfiguration))]
public class MyContext : DbContext
{
    public MyContext(IConfiguration config)
      : base(config["Data:DefaultConnection:ConnectionString"])
      {
      }
      // ...
}

Registrar MyContext en el contenedor de inyección de dependencia en Startup.cs :

public void ConfigureServices(IServiceCollection services)
{
    // ...
    services.AddScoped<MyContext>();
}

Luego, puede usar la inyección de constructor para obtener MyContext en sus controladores.

Más detalles en mi publicación de blog en http://dan.cx/ 2015/08/entity-framework-6-mysql-aspnet y un proyecto de muestra en https://github.com/Daniel15/EFExample