Vấn đề của tôi là tôi đang cố gắng tạo một cơ sở dữ liệu lõi Entity Framework với dữ liệu và trong tâm trí của tôi, mã dưới đây hiển thị công việc. Tôi đã nhận ra rằng điều này không nên được gọi trong các nhà xây dựng ApplicationDbContext
và nên được gọi từ startup
nhưng im không chắc chắn làm thế nào để làm điều này.Cơ sở dữ liệu hạt nhân ASP.NET Core RC2
EDIT: Dựa trên các giải pháp được cung cấp bởi Ketrex, giải pháp của tôi là như sau:
Startup.cs:
public void Configure(IApplicationBuilder app, IHostingEnvironment env, ILoggerFactory loggerFactory)
{
...
app.ApplicationServices.GetRequiredService<ApplicationDbContext>().Seed();
}
Seed mở rộng:
public static class DbContextExtensions
{
public static void Seed(this ApplicationDbContext context)
{
// Perform database delete and create
context.Database.EnsureDeleted();
context.Database.EnsureCreated();
// Perform seed operations
AddCountries(context);
AddAreas(context);
AddGrades(context);
AddCrags(context);
AddClimbs(context);
// Save changes and release resources
context.SaveChanges();
context.Dispose();
}
private static void AddCountries(ApplicationDbContext context)
{
context.AddRange(
new Country { Name = "England", Code = "En" },
new Country { Name = "France", Code = "Fr" }
);
}
...
}
Tôi hiểu rằng gieo mầm cơ sở dữ liệu khá cao trong danh sách ưu tiên cho Entity Framework nhưng nó sẽ là tuyệt vời nếu có một số tài liệu về cách đạt được nhiệm vụ tầm thường này hoặc ít nhất cung cấp một công việc tạm thời tròn. Nếu ai đó có thể cung cấp một số hướng dẫn về cách làm điều này, nó sẽ được đánh giá cao. Tôi cảm thấy tôi gần gũi với một giải pháp nhưng không thể kết hợp nó lại với nhau.
Cảm ơn bạn đã được trợ giúp.
Cảm ơn bạn rất nhiều! Đó là dòng này 'app.ApplicationServices.GetRequiredService() 'mà tôi đã bỏ lỡ. Tôi đã sửa đổi giải pháp của bạn một chút để sử dụng nó như một phương pháp mở rộng. –
vấn đề: context.Database.EnsureDeleted() xóa __EFMigrationsHistory cũng !!! –
@MohammadAkbari bạn dường như đang hái trứng. Hãy chú ý đến số // ... thực hiện các hoạt động hạt giống khác ? Nó rõ ràng ngụ ý anh ta có thể có các hoạt động khác để thực hiện. Vấn đề được giải quyết ở đây là tiêm bối cảnh vào phương thức hạt giống. – Ketrex