public static async Task SeedDatabaseAsync(this IServiceProvider serviceProvider, string csvUrl) { using (var serviceScope = serviceProvider.CreateScope()) { var logger = serviceScope.ServiceProvider.GetService <ILogger <Startup> >(); var autoMapper = serviceScope.ServiceProvider.GetService <IMapper>(); var dbContext = serviceScope.ServiceProvider.GetService <BreweryDbContext>(); var breweryConductor = serviceScope.ServiceProvider.GetService <IBreweryConductor>(); var userConductor = serviceScope.ServiceProvider.GetService <IUserConductor>(); if (!dbContext.AllMigrationsApplied()) { logger.LogInformation($"Initializing Database"); dbContext.Database.Migrate(); } if (!dbContext.Users.Any()) { _ = userConductor.Create(new User { FirstName = "Michael", LastName = "Tyson", Email = "*****@*****.**" }, "Passw0rd!"); } await dbContext.EnsureSeededAsync(async() => { logger.LogInformation($"Downloading: {csvUrl}"); using (var file = new FileDownload(csvUrl)) { var streamReader = await file.StreamReader(); var breweryImportEntities = autoMapper .Map <IEnumerable <Entity.Brewery> >( GetBreweries(streamReader) ) .ToList(); logger.LogInformation($"<******************* Importing {breweryImportEntities.Count} breweries *******************>"); var results = breweryConductor.BulkCreate(breweryImportEntities);