ASP.NET Core RC2 Seed Database
Моя проблема в том, что я пытаюсь заполнить базу данных Entity Framework Core данными, и, на мой взгляд, приведенный ниже код демонстрирует работу. Я понял, что это не должно называться вApplicationDbContext
конструктор и должен быть вызван изstartup
но я не уверен, как это сделать.
РЕДАКТИРОВАТЬ: На основе решения, предоставленного Ketrex, мое решение заключается в следующем:
Startup.cs:
public void Configure(IApplicationBuilder app, IHostingEnvironment env, ILoggerFactory loggerFactory)
{
...
app.ApplicationServices.GetRequiredService<ApplicationDbContext>().Seed();
}
Расширение семян:
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" }
);
}
...
}
Я понимаю, что заполнение базы данных занимает достаточно высокое место в списке приоритетов для Entity Framework, но было бы замечательно, если бы была некоторая документация о том, как решить эту тривиальную задачу, или, по крайней мере, обеспечить временное решение проблемы. Если кто-то может дать некоторые рекомендации о том, как это сделать, это будет с благодарностью. Я чувствую, что близок к решению, но просто не могу собрать его воедино.
Спасибо за любую помощь.