예제 #1
0
        public static async Task Main(string[] args)
        {
            var host = CreateHostBuilder(args).Build();

            using var scope = host.Services.CreateScope();
            var services      = scope.ServiceProvider;
            var loggerFactory = services.GetRequiredService <ILoggerFactory>();

            try
            {
                var context = services.GetRequiredService <ApplicationDbContext>();
                if (context.Database.GetPendingMigrations().Count() > 0)
                {
                    context.Database.Migrate();//installs pending migrations.
                }
                await ApplicationContextSeed.SeedAsync(context, loggerFactory);
            }
            catch (Exception ex)
            {
                var logger = loggerFactory.CreateLogger <Program>();//Program is the class we want to associate the error with.
                logger.LogError(ex, "An error occured during migration");
            }

            host.Run();
        }
예제 #2
0
        public static async Task Main(string[] args)
        {
            var host = CreateHostBuilder(args)
                       .Build();

            using (var scope = host.Services.CreateScope())
            {
                var services      = scope.ServiceProvider;
                var loggerFactory = services.GetRequiredService <ILoggerFactory>();
                try
                {
                    // При первом запуске заполняем бд данными

                    var catalogContext = services.GetRequiredService <ApplicationContext>();
                    await ApplicationContextSeed.SeedAsync(catalogContext, loggerFactory);
                }
                catch (Exception ex)
                {
                    var logger = loggerFactory.CreateLogger <Program>();
                    logger.LogError(ex, "An error occurred seeding the DB.");
                    return;
                }
            }

            host.Run();
        }
        public static void Seed(this IApplicationBuilder applicationBuilder)
        {
            using (var serviceScope = applicationBuilder
                                      .ApplicationServices.GetRequiredService <IServiceScopeFactory>().CreateScope())
            {
                var context = serviceScope.ServiceProvider.GetService <ApplicationDbContext>();

                ApplicationContextSeed.SeedAsync(context).GetAwaiter().GetResult();
            }
        }
예제 #4
0
        public static async Task Main(string[] args)
        {
            var host = CreateHostBuilder(args).Build();

            using (var scope = host.Services.CreateScope())
            {
                // context db seed
                var services = scope.ServiceProvider;
                await ApplicationContextSeed.SeedAsync(services);
            }

            await host.RunAsync();
        }
예제 #5
0
        protected override void ConfigureWebHost(IWebHostBuilder builder)
        {
            builder.UseEnvironment("Testing");

            builder.ConfigureServices(services =>
            {
                services.AddEntityFrameworkInMemoryDatabase();

                var provider = services
                               .AddEntityFrameworkInMemoryDatabase()
                               .BuildServiceProvider();

                services.AddDbContext <ApplicationContext>(options =>
                {
                    options.UseInMemoryDatabase("DBForTesting");
                    options.UseInternalServiceProvider(provider);
                });

                services.AddIdentity <ApplicationUser, IdentityRole>()
                .AddEntityFrameworkStores <ApplicationContext>();

                var sp = services.BuildServiceProvider();

                using (var scope = sp.CreateScope())
                {
                    var scopedServices = scope.ServiceProvider;

                    var db = scopedServices.GetRequiredService <ApplicationContext>();

                    db.Database.EnsureCreated();

                    try
                    {
                        var userManager = scopedServices.GetRequiredService <UserManager <ApplicationUser> >();
                        var roleManager = scopedServices.GetRequiredService <RoleManager <IdentityRole> >();

                        IdentityContextSeed.SeedAsync(userManager, roleManager).Wait();
                        ApplicationContextSeed.SeedAsync(db, userManager, "/img/example_image.jpg").Wait();
                    }
                    catch (Exception ex)
                    {
                        Debug.WriteLine(ex.Message);
                    }
                }
            });
        }