Exemplo n.º 1
0
        protected override void ConfigureWebHost(IWebHostBuilder builder)
        {
            builder.ConfigureServices(async services =>
            {
                // Create a new service provider.
                var serviceProvider = new ServiceCollection()
                                      .AddEntityFrameworkInMemoryDatabase()
                                      .BuildServiceProvider();

                // Add a database context (AppDbContext) using an in-memory
                // database for testing.
                services.AddDbContext <PaymentDbContext>(options =>
                {
                    options.UseInMemoryDatabase("PaymentDb");
                    options.UseInternalServiceProvider(serviceProvider);
                });

                //services.AddTransient<IPaymentRepository, PaymentRepository>();
                services.AddTransient <IRepositoryWrapper, RepositoryWrapper>();

                // Build the service provider.
                var sp = services.BuildServiceProvider();

                // Create a scope to obtain a reference to the database
                // context (AppDbContext).
                using (var scope = sp.CreateScope())
                {
                    var scopedServices = scope.ServiceProvider;
                    var context        = scopedServices.GetRequiredService <PaymentDbContext>();

                    var logger = scopedServices
                                 .GetRequiredService <ILogger <ApiWebApplicationFactory <TStartup> > >();

                    // Ensure the database is created.
                    //context.Database.EnsureCreated();

                    try
                    {
                        // Seed the database with test data.
                        await DbContextSeed.SeedPaymentDataAsync(context);
                    }
                    catch (Exception ex)
                    {
                        logger.LogError(ex, "An error occurred seeding the " +
                                        $"database with test messages. Error: {ex.Message}");
                    }
                }
            });
        }
Exemplo n.º 2
0
        public async static Task Main(string[] args)
        {
            // throttle the thread pool (set available threads to amount of processors)
            ThreadPool.SetMaxThreads(Environment.ProcessorCount, Environment.ProcessorCount);

            var host = CreateHostBuilder(args).Build();

            using (var scope = host.Services.CreateScope())
            {
                var services = scope.ServiceProvider;

                try
                {
                    var appDbContext = services.GetRequiredService <PaymentDbContext>();

                    appDbContext.Database.EnsureDeleted();
                    appDbContext.Database.Migrate();

                    await DbContextSeed.SeedPaymentDataAsync(appDbContext);

                    var userDbContext = services.GetRequiredService <UserDbContext>();

                    userDbContext.Database.EnsureDeleted();
                    userDbContext.Database.Migrate();

                    await DbContextSeed.SeedUserDataAsync(userDbContext);
                }
                catch (Exception ex)
                {
                    var logger = scope.ServiceProvider.GetRequiredService <ILogger <Program> >();
                    logger.LogError(ex, "An error occurred while migrating the database.");

                    throw;
                }
            }

            await host.RunAsync();
        }