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