using Microsoft.AspNetCore.Hosting; using Microsoft.AspNetCore.Identity; using Microsoft.eShopWeb.Infrastructure.Data; using Microsoft.eShopWeb.Infrastructure.Identity; using Microsoft.Extensions.DependencyInjection; using Microsoft.Extensions.Hosting; using Microsoft.Extensions.Logging; using System; using System.Threading.Tasks; using Microsoft.Extensions.Configuration; namespace Microsoft.eShopWeb.PublicApi { public class Program { public async static Task Main(string[] args) { var host = CreateHostBuilder(args) .Build(); using (var scope = host.Services.CreateScope()) { var services = scope.ServiceProvider; var loggerFactory = services.GetRequiredService(); try { var catalogContext = services.GetRequiredService(); await CatalogContextSeed.SeedAsync(catalogContext, loggerFactory); var userManager = services.GetRequiredService>(); var roleManager = services.GetRequiredService>(); await AppIdentityDbContextSeed.SeedAsync(userManager, roleManager); } catch (Exception ex) { var logger = loggerFactory.CreateLogger(); logger.LogError(ex, "An error occurred seeding the DB."); } } host.Run(); } public static IHostBuilder CreateHostBuilder(string[] args) => Host.CreateDefaultBuilder(args) .ConfigureAppConfiguration((builderContext, config) => { var env = builderContext.HostingEnvironment; config .AddJsonFile("appsettings.json") .AddJsonFile($"appsettings.{env.EnvironmentName}.json", optional: true, reloadOnChange: true); }) .ConfigureWebHostDefaults(webBuilder => { webBuilder.UseStartup(); }); } }