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