gpt4 book ai didi

c# - Entity Framework 6.2 不应该自动选择我的自定义 DbConfiguration

转载 作者:行者123 更新时间:2023-12-04 09:03:45 26 4
gpt4 key购买 nike

我想启用 SQL 日志记录 显式 来自单个集成测试,无需更改 DbContext 定义
我有: 10+ 多个 DbContexts 的项目。 10 多个测试项目。许多其他集成测试也使用 EF
我尝试过的:

internal class MyDbConfiguration : DbConfiguration
{
public MyDbConfiguration(StreamWriter sw)
{
var interceptor = new DatabaseLogFormatter(s => { sw.WriteLine(s); });

AddInterceptor(interceptor );
}
}
来自一个正在运行的集成测试 显式 在我的机器上,通过运行此代码启动
        var dbConfiguration = new MyDbConfiguration(fileStream);

DbConfiguration.SetConfiguration(dbConfiguration);
这工作正常。单个测试记录所有 EF SQL
但是当我运行完整的测试套件(没有一个测试也没有 SetConfiguration)时,EF 会选择我的 MyDbConfiguration(到很晚)并抛出一个异常
System.InvalidOperationException:在发现“MyDbConfiguration”类型之前, Entity Framework 使用了默认的 DbConfiguration 实例
我如何防止这种情况?我无法更改任何 app.configs
我希望 EF 使用 MyDbConfiguration,只有在我配置它时。

最佳答案

如果您不想要 Entity Framework检测并提取您的自定义 DbConfiguration自动,您将找到一种绕过自动检测规则的方法。
默认情况下(没有任何额外的自定义配置)DbConfigurationFinderEntity Framework ( source code ) 查找派生自 DbConfiguration 的类型在与 DbContext 相同的程序集中派生类被声明。
因为你不能改变任何.config文件,一种方法是声明您的 DbConfiguration派生类在一个单独的程序集中,远离持有 DbContext 的程序集.
由于您将其用于集成测试目的,因此您可以将其放入该测试项目中。

关于c# - Entity Framework 6.2 不应该自动选择我的自定义 DbConfiguration,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63503774/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com