Reputation: 29159
I have the following code to set up DBContext in the .Net core 2.0 console program and it's injected to the constructor of the main application class.
IConfigurationRoot configuration = GetConfiguration();
services.AddSingleton(configuration);
Conn = configuration.GetConnectionString("ConnStr1");
services.AddDbContext<MyDbContext>(o => o.UseSqlServer(Conn));
Now I created a xUnit test class and need to initialize the same DbContext for testing.
context = new MyDbContext(new DbContextOptions<MyDbContext>());
It gets the error of the parameter connectionString
cannot be null. How to set up the DbContext in test project properly?
Upvotes: 21
Views: 17088
Reputation: 131
The George Alexandria's solutions work for me:
var optionsBuilder = new DbContextOptionsBuilder<MyDbContext>();
optionsBuilder.UseInMemoryDatabase();
var context = new MyDbContext(optionsBuilder.Options);
The UseInMemoryDatabase
extension method is included in Microsoft.EntityFrameworkCore.InMemory
Upvotes: 10
Reputation: 167
EF 2.0 requires that all in-memory database are named, so be sure to name it like so:
var optionsBuilder = new DbContextOptionsBuilder<MyDbContext>();
optionsBuilder.UseInMemoryDatabase("MyInMemoryDatabseName");
var context = new MyDbContext(optionsBuilder.Options);
Upvotes: 3
Reputation: 29159
I found a way to do it.
var dbOption = new DbContextOptionsBuilder<MyDbContext>()
.UseSqlServer("....")
.Options;
Upvotes: 14