Protože Web.config se již nepoužívá s ASP.NET 5, musíte použít konfigurace na základě kódu místo toho nakonfigurovat. Chcete-li tak učinit, vytvořte novou třídu, která dědí z 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());
}
}
První částí konfigurace je hack pro registraci poskytovatele ADO.NET za běhu dynamickým přidáním nové konfigurační položky do system.data
sekce. To je velmi otřesné, ale zdá se, že funguje správně.
Přidejte připojovací řetězec do config.json
spíše než Web.config
:
{
"Data": {
"DefaultConnection": {
"ConnectionString": "Server=localhost; Database=test; Uid=test; Pwd=password;"
}
}
}
Upravte DbContext
použít správnou konfiguraci a připojovací řetězec:
[DbConfigurationType(typeof(MyDbConfiguration))]
public class MyContext : DbContext
{
public MyContext(IConfiguration config)
: base(config["Data:DefaultConnection:ConnectionString"])
{
}
// ...
}
Zaregistrujte MyContext
v kontejneru pro vkládání závislostí v Startup.cs
:
public void ConfigureServices(IServiceCollection services)
{
// ...
services.AddScoped<MyContext>();
}
Pak stačí použít vložení konstruktoru k získání MyContext
do vašich ovladačů.
Další podrobnosti v mém příspěvku na blogu na http://dan.cx/ 2015/08/entity-framework-6-mysql-aspnet a ukázkový projekt na https://github.com/Daniel15/EFExample