내 문제는 데이터로 Entity Framework 핵심 데이터베이스를 시드하려고하고 있으며 아래 코드 작업이 마음에 들었습니다. 나는 이것이 ApplicationDbContext
생성자에서 호출되어서는 안되며 startup
에서 호출되어야하지만이 작업을 수행하는 방법을 잘 모르겠다는 것을 깨달았다.ASP.NET 핵심 RC2 시드 데이터베이스
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" }
);
}
...
}
나는 시드 이해 다음과 같이 Ketrex가 제공하는 솔루션을 기반으로, 내 솔루션입니다 데이터베이스는 Entity Framework의 우선 순위 목록에서 상당히 높습니다. 그러나이 간단한 작업을 수행하는 방법에 대한 문서가 있거나 적어도 임시 작업을 제공하는 것이 좋습니다. 일주. 누군가가이를 수행하는 방법에 대한 지침을 제공 할 수 있다면 크게 감사하겠습니다. 나는 내가 해결책에 가깝다고 느낀다.
도움 주셔서 감사합니다.
정말 고마워요! 이 줄은'app.ApplicationServices.GetRequiredService()'입니다. 확장 방법으로 사용하기 위해 솔루션을 약간 수정했습니다. –
문제 : context.Database.EnsureDeleted() delete __EFMigrationsHistory 또한 !!! –
@ 모함마드 반갑습니다. 당신은 새끼를 뽑는 것 같습니다. // ... 다른 시드 작업 행을 수행 하시겠습니까? 그것은 그가 수행 할 다른 작업을 할 수 있음을 분명히 암시합니다. 여기서 다루는 문제는 컨텍스트를 시드 메서드에 주입하는 것입니다. – Ketrex