public async Task StartAsync(CancellationToken cancellationToken) { if (_hostingEnvironment.IsStaging() || _hostingEnvironment.IsProduction()) { var dbInitializer = new AppContextInitializerMigrate(); await dbInitializer.InitializeAsync(_context); } else if (_hostingEnvironment.IsIntegration()) { var dbInitializer = new AppContextInitializerDropMigrate(); await dbInitializer.InitializeAsync(_context); } else { var dbInitializer = new AppContextInitializerDropMigrate(); await dbInitializer.InitializeAsync(_context); } }
protected override async Task ExecuteAsync(IServiceProvider scopedServiceProvider, CancellationToken stoppingToken) { var context = scopedServiceProvider.GetRequiredService <AppContext>(); if (_hostingEnvironment.IsStaging() || _hostingEnvironment.IsProduction()) { var dbInitializer = new AppContextInitializerMigrate(); await dbInitializer.InitializeAsync(context); } else if (_hostingEnvironment.IsIntegration()) { //Can't have multi provider migrations so best to only use migrations in production. //Can only be used for sqlserver and sqlite. Throws exception for InMemory //var dbInitializer = new AppContextInitializerDropMigrate(); var dbInitializer = new AppContextInitializerDropCreate(); await dbInitializer.InitializeAsync(context); } else { var dbInitializer = new AppContextInitializerDropCreate(); await dbInitializer.InitializeAsync(context); } }