相关疑难解决方法(0)

实体框架核心:记录单个数据库上下文实例的查询

使用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上下文 - 它不能很好地工作.

问题/问题:

  • 我想要的是什么?
  • 即我可以使用仅用于该db上下文实例的db上下文注册记录器吗?
  • 还有其他方法可以完成我想要做的事情吗?

c# logging unit-testing xunit entity-framework-core

23
推荐指数
3
解决办法
2万
查看次数

标签 统计

c# ×1

entity-framework-core ×1

logging ×1

unit-testing ×1

xunit ×1