Тъй като Web.config вече не се използва с ASP.NET 5, трябва да използвате конфигурация, базирана на код за да го конфигурирате вместо това. За да направите това, създайте нов клас, който наследява от 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());
}
}
Първата част от конфигурацията е хак за регистриране на доставчика на ADO.NET по време на изпълнение, чрез динамично добавяне на нов запис за конфигурация към system.data
раздел. Това е много хакерско, но изглежда работи правилно.
Добавете низа за връзка към config.json
вместо Web.config
:
{
"Data": {
"DefaultConnection": {
"ConnectionString": "Server=localhost; Database=test; Uid=test; Pwd=password;"
}
}
}
Променете DbContext
за да използвате правилната конфигурация и низ за връзка:
[DbConfigurationType(typeof(MyDbConfiguration))]
public class MyContext : DbContext
{
public MyContext(IConfiguration config)
: base(config["Data:DefaultConnection:ConnectionString"])
{
}
// ...
}
Регистрирайте MyContext
в контейнера за инжектиране на зависимост в Startup.cs
:
public void ConfigureServices(IServiceCollection services)
{
// ...
services.AddScoped<MyContext>();
}
След това можете просто да използвате инжектиране на конструктор, за да получите MyContext
във вашите контролери.
Повече подробности в моя публикация в блога на адрес http://dan.cx/ 2015/08/entity-framework-6-mysql-aspnet и примерен проект на адрес https://github.com/Daniel15/EFExample