使用EF Core(或任何ORM)我想跟踪ORM在我的软件中进行某些操作期间对数据库的查询次数.
我之前在Python下使用过SQLAlchemy,在这个堆栈上,这很容易设置.我通常有一个单元测试,它针对一个场景的查询数量,针对内存中的SQLite数据库进行断言.
现在我想使用EF Core做同样的事情,并查看了Logging文档.
在我的测试设置代码中,我按照文档说的那样做:
using (var db = new BloggingContext())
{
var serviceProvider = db.GetInfrastructure<IServiceProvider>();
var loggerFactory = serviceProvider.GetService<ILoggerFactory>();
loggerFactory.AddProvider(new MyLoggerProvider());
}
Run Code Online (Sandbox Code Playgroud)
但我遇到的问题我怀疑是以下结果(也来自文档):
您只需要使用单个上下文实例注册记录器.注册后,它将用于同一AppDomain中上下文的所有其他实例.
我在测试中看到的问题表明我的记录器实现是在多个上下文中共享的(这与我阅读它们时的文档一致).并且因为a)我的测试运行器在并行运行测试并且b)我的整个测试套件创建了数百个db上下文 - 它不能很好地工作.
问题/问题: