0
update-database 명령을 실행하지 않고 EF 마이그레이션이 시드 데이터와 함께 실행되는지 여부를 알고 싶습니다. 즉. update-database 명령을 실행하지 않고도 데이터베이스에 생성 된 모든 테이블을 볼 수 있습니다.Entityframework Core 2.0 응용 프로그램이 처음 실행될 때 마이그레이션이 실행됩니까?
문제가 있습니까? 아니면 예상되는 동작입니까?
나는 데이터를 시드 별도의 방법을 사용하고 있습니다 :
public async Task SeedAsync(IServiceProvider serviceProvider)
{
//Based on EF team's example at https://github.com/aspnet/MusicStore/blob/dev/samples/MusicStore/Models/SampleData.cs
using (var serviceScope = serviceProvider.GetRequiredService<IServiceScopeFactory>().CreateScope())
{
var dbContext = serviceScope.ServiceProvider.GetService<WorkflowDBContext>();
if(!dbContext.AllMigrationsApplied())
{
serviceScope.ServiceProvider.GetService<WorkflowDBContext>().Database.Migrate();
if (!await dbContext.Alert.AnyAsync())
{
await SeedData(dbContext);
}
}
}
}
public static class DbContextExtension
{
public static bool AllMigrationsApplied(this WorkflowDBContext context)
{
var applied = context.GetService<IHistoryRepository>()
.GetAppliedMigrations()
.Select(m => m.MigrationId);
var total = context.GetService<IMigrationsAssembly>()
.Migrations
.Select(m => m.Key);
return !total.Except(applied).Any();
}
}
감사
감사합니다. 질문을 업데이트하고 데이터를 시드하는 데 사용하는 코드를 붙여 넣었습니다. 내가 한 일은이 코드에서 옳은 코드인지 아니면 어떤 코드의 냄새입니까? –