Có thể tiêm phụ thuộc vào lớp Cấu hình của Entity Framework 6 không?Dependency Injection vào phương thức Seed Entity Framework?
Ví dụ như thế này:
internal sealed class Configuration : DbMigrationsConfiguration<MyBaseContext>
{
private readonly ILogger _logger;
public Configuration(ILogger logger)
{
this._logger = logger;
AutomaticMigrationsEnabled = true;
}
protected override void Seed(Home.DAL.Data.HomeBaseContext context)
{
//log something
}
}
Hoặc tổng quát hơn cách tiếp cận là để có được khả năng để đưa mã thậm chí bên trong di cư:
public partial class InitialMigration : DbMigration
{
private readonly ILogger _logger;
public InitialMigration(ILogger logger)
{
this._logger = logger;
}
public override void Up()
{
CreateTable(...);
}
public override void Down()
{
DropTable(...);
}
}
đâu DI khởi xảy ra trong Entity Framework 6 để xác định những ràng buộc đó?
CẬP NHẬT
Im không hỏi về những gì tôi nên sử dụng. Hiện nay, Im sử dụng Ninject nhưng đó là câu hỏi, bởi vì bất cứ điều gì tôi sử dụng, tôi sẽ có thể tiêm dependecies vào constructor của di cư. Của courser nếu bạn viết một cái gì đó như tôi đã viết trong ví dụ trên nó sẽ chỉ ném bạn ngoại lệ về "không có constructor mặc định".
ILogger trong ví dụ trên chỉ là ví dụ đơn giản về sự phụ thuộc. Mọi thứ trở nên tồi tệ hơn nếu bạn có IGeneratorService sẽ tạo ra một số dữ liệu và bạn muốn sử dụng dịch vụ này để tạo dữ liệu cho phương thức Seed.
Việc khởi tạo DI phải được xử lý bởi khung DI của bạn. –
Câu trả lời này cho bất kỳ phần nào của câu hỏi này? – eocron
Bạn đã thử sử dụng bất kỳ khung công tác DI nào chưa? – ColinM