public ListAll(ITestOutputHelper output) { _output = output; var dbOptions = new DbContextOptionsBuilder <NotePadContext>() .UseInMemoryDatabase(databaseName: "TestListNotes") .Options; _notePadContext = new NotePadContext(dbOptions); NotePadContextSeed.Initialize(_notePadContext); _noteRepository = new NoteRepository(_notePadContext); }
protected override void ConfigureWebHost(IWebHostBuilder builder) { builder.UseEnvironment("Testing"); builder.ConfigureServices(services => { services.AddEntityFrameworkInMemoryDatabase(); //Create a new service provider. var provider = services .AddEntityFrameworkInMemoryDatabase() .BuildServiceProvider(); //Add a database context (NotePadContext) using an in-memory services.AddDbContext <NotePadContext>(options => { options.UseInMemoryDatabase("InMemoryDbForTesting"); options.UseInternalServiceProvider(provider); }); //Build the service provider var sp = services.BuildServiceProvider(); //Create a scope to obtain a reference to the database using (var scope = sp.CreateScope()) { var scoppedServices = scope.ServiceProvider; var db = scoppedServices.GetRequiredService <NotePadContext>(); var logger = scoppedServices.GetRequiredService <ILogger <WebTestFixture> >(); //Ensure the database is created db.Database.EnsureCreated(); try { NotePadContextSeed.Initialize(db); } catch (Exception ex) { logger.LogError(ex, $"An error occurred seeding the " + $"database with test messages. Error: {ex.Message}"); } } }); base.ConfigureWebHost(builder); }
public static void SeedDatabase(IHost host) { var scopeFactory = host.Services.GetRequiredService <IServiceScopeFactory>(); using (var scope = scopeFactory.CreateScope()) { var context = scope.ServiceProvider.GetRequiredService <NotePadContext>(); if (context.Database.EnsureCreated()) { var logger = scope.ServiceProvider.GetRequiredService <ILogger <Program> >(); try { NotePadContextSeed.Initialize(context); Debug.Print("A database seeding was initialize"); } catch (Exception ex) { logger.LogError(ex, "A database seeding error ocurred."); } } } }