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);
            }
        }