gpt4 book ai didi

c# - 已设置 EF6 'DbConfigurationClass' 但未发现此类型 - 多个 DbContexts 和 DbConfigurations

转载 作者:可可西里 更新时间:2023-11-01 07:47:56 25 4
gpt4 key购买 nike

我有一个解决方案,其中我们有两个 DbContext,我们正在从 EF4 迁移到 EF6。旧的 DbContext 是代码优先的,我们主要使用较新的生成的 db-first,但由于外部依赖性,两者都需要运行。

我的类(class)是这样的:

namespace Old.Busted.EF.DAL
{
[DbConfigurationType(typeof(Old.Busted.EF.DAL.OldConfiguration))]
public class OldContext : DbContext[...]

public class OldConfiguration : DbConfiguration[...]
}

namespace New.Shiny.EF.DAL
{
[DbConfigurationType(typeof(New.Shiny.EF.DAL.NewConfiguration))]
public class NewContext : DbContext[...]

public class NewConfiguration : DbConfiguration[...]
}

我得到的准确错误是

An instance of 'NewConfiguration' was set but this type was not discovered in the same assembly as the 'OldContext' context. Either put the DbConfiguration type in the same assembly as the DbContext type, use DbConfigurationTypeAttribute on the DbContext type to specify the DbConfiguration type, or set the DbConfiguration type in the config file.

它正在尝试将新配置应用于旧上下文。破坏代码所在的库是唯一同时引用旧的和新的 EF DAL 的库,而且只有在通过 mstest 在命令行上运行测试时才会抛出此异常 - 它们从内部运行得很好 Visual Studio 。

使用 .NET 4.0 和 Visual Studio 2010。

我尝试过的事情:

  • 将配置信息放在配置文件而不是代码中(无变化)
  • 将单个 DbConfiguration 放入共享库(收支平衡更多的东西)
  • 使用传入 DbConnection 对象的 DbContext 构造函数代替无参数或字符串构造函数(无变化)

最佳答案

最简单的解决方案似乎是转向基于配置文件的配置,详见 here .

我第一次无法让它工作的原因是因为我在各种配置文件中的一个中列出了不同版本的 EF 但没有捕捉到它。

我确实尝试在公共(public)库中使用单个 DbConfiguration 类并且这次能够让它工作(没有真正的摆弄,我一定是第一次做错了一些事情)但我认为配置 -基于文件的配置是更好的解决方案。

将配置信息放在一个config文件中,多么新颖啊!

关于c# - 已设置 EF6 'DbConfigurationClass' 但未发现此类型 - 多个 DbContexts 和 DbConfigurations,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20431184/

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