Vì Web.config không còn được sử dụng với ASP.NET 5, bạn cần sử dụng cấu hình dựa trên mã để cấu hình nó thay thế. Để làm như vậy, hãy tạo một lớp mới kế thừa từ 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());
}
}
Phần đầu tiên của cấu hình là một cuộc tấn công để đăng ký nhà cung cấp ADO.NET trong thời gian chạy, bằng cách thêm động một mục cấu hình mới vào system.data
tiết diện. Điều này rất khó hiểu, nhưng dường như hoạt động chính xác.
Thêm chuỗi kết nối vào config.json
chứ không phải là Web.config
:
{
"Data": {
"DefaultConnection": {
"ConnectionString": "Server=localhost; Database=test; Uid=test; Pwd=password;"
}
}
}
Sửa đổi DbContext
để sử dụng đúng cấu hình và chuỗi kết nối:
[DbConfigurationType(typeof(MyDbConfiguration))]
public class MyContext : DbContext
{
public MyContext(IConfiguration config)
: base(config["Data:DefaultConnection:ConnectionString"])
{
}
// ...
}
Đăng ký MyContext
trong vùng chứa nội dung phụ thuộc trong Startup.cs
:
public void ConfigureServices(IServiceCollection services)
{
// ...
services.AddScoped<MyContext>();
}
Sau đó, bạn có thể chỉ cần sử dụng hàm tạo chèn để lấy MyContext
vào bộ điều khiển của bạn.
Thêm chi tiết trong bài đăng trên blog của tôi tại http://dan.cx/ 2015/08 / entity-framework-6-mysql-aspnet và một dự án mẫu tại https://github.com/Daniel15/EFExample