Karena Web.config tidak lagi digunakan dengan ASP.NET 5, Anda perlu menggunakan konfigurasi berbasis kode untuk mengkonfigurasinya sebagai gantinya. Untuk melakukannya, buat kelas baru yang mewarisi dari 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());
}
}
Bagian pertama dari konfigurasi adalah peretasan untuk mendaftarkan penyedia ADO.NET pada saat runtime, dengan menambahkan entri konfigurasi baru secara dinamis ke system.data
bagian. Ini sangat meretas, tetapi tampaknya berfungsi dengan benar.
Tambahkan string koneksi ke config.json
daripada Web.config
:
{
"Data": {
"DefaultConnection": {
"ConnectionString": "Server=localhost; Database=test; Uid=test; Pwd=password;"
}
}
}
Ubah DbContext
untuk menggunakan konfigurasi dan koneksi string yang benar:
[DbConfigurationType(typeof(MyDbConfiguration))]
public class MyContext : DbContext
{
public MyContext(IConfiguration config)
: base(config["Data:DefaultConnection:ConnectionString"])
{
}
// ...
}
Daftarkan MyContext
dalam wadah injeksi ketergantungan di Startup.cs
:
public void ConfigureServices(IServiceCollection services)
{
// ...
services.AddScoped<MyContext>();
}
Kemudian Anda bisa menggunakan injeksi konstruktor untuk mendapatkan MyContext
ke pengontrol Anda.
Lebih detail di posting blog saya di http://dan.cx/ 2015/08/entity-framework-6-mysql-aspnet , dan contoh proyek di https://github.com/Daniel15/EFExample