How to suppress InMemoryEventId.TransactionIgnoredWarning when unit testing with in-memory database with transactions?
In the code where you declare the in-memory database, configure the context to ignore that error as follows:
public MyDbContext GetContextWithInMemoryDb()
{
var options = new DbContextOptionsBuilder<MyDbContext>()
.UseInMemoryDatabase(Guid.NewGuid().ToString())
// don't raise the error warning us that the in memory db doesn't support transactions
.ConfigureWarnings(x => x.Ignore(InMemoryEventId.TransactionIgnoredWarning))
.Options;
return new MyDbContext(options);
}
I used the answer from @tomRedox but varied it for use in an ASP.NET Core 2.0 startup.cs file.
services.AddDbContext<MyDbContext>(options =>
{
options.UseInMemoryDatabase("TestDb");
options.ConfigureWarnings(x => x.Ignore(InMemoryEventId.TransactionIgnoredWarning));
});