我正在使用EF Core内存数据库,并且试图在使用事务的方法上运行单元测试:

using (var transaction = await _context.Database.BeginTransactionAsync())
{
    _context.Update(item);
    result = await _context.SaveChangesAsync();

    // some other stuff

    transaction.Commit();
}
但是,我从测试运行程序中收到此错误:

如何抑制该错误?

最佳答案

在声明内存数据库的代码中,配置上下文以忽略该错误,如下所示:

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);
}

关于c# - 使用带有事务的内存数据库进行单元测试时,如何抑制InMemoryEventId.TransactionIgnoredWarning?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/44080733/

10-13 06:06