Web.configはASP.NET5で使用されなくなったため、コードベースの構成 代わりに構成します。これを行うには、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());
}
}
構成の最初の部分は、system.data
に新しい構成エントリを動的に追加することにより、実行時にADO.NETプロバイダーを登録するためのハックです。 セクション。これは非常にハッキーですが、正しく機能しているように見えます。
接続文字列を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 のサンプルプロジェクト