小编Zin*_*ind的帖子

设置了EF6'DbConfigurationClass',但未发现此类型 - 多个DbContexts和DbConfigurations

我有一个解决方案,我们有两个DbContexts,我们正在从EF4转移到EF6.较旧的DbContext是代码优先的,我们主要使用较新的生成的db-first,但由于外部依赖性,需要在操作中使用它们.

我的课程看起来像这样:

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[...]
}
Run Code Online (Sandbox Code Playgroud)

我得到的确切错误是

设置了"NewConfiguration"的实例,但是在与"OldContext"上下文相同的程序集中未发现此类型.将DbConfiguration类型放在与DbContext类型相同的程序集中,在DbContext类型上使用DbConfigurationTypeAttribute指定DbConfiguration类型,或在配置文件中设置DbConfiguration类型.

这是尝试将新配置应用于旧上下文.打破代码所在的库是唯一引用旧的和新的EF DAL的库,而且只有在通过mstest在命令行上运行测试时才会抛出此异常 - 它们从内部通过了良好的运行视觉工作室.

使用.NET 4.0和Visual Studio 2010.

我尝试过的事情:

  • 将配置信息放入配置文件而不是代码(无更改)
  • 将单个DbConfiguration放入共享库(打破了更多的东西)
  • 使用DbContext构造函数传入DbConnection对象而不是无参数或字符串构造函数(无更改)

.net c# entity-framework

15
推荐指数
1
解决办法
4919
查看次数

数据库模式不同步 - 需要在不丢失数据的情况下获取最新信息

问题是:我们有一个应用程序,其中一部分由总用户的一小部分使用,并且该部分应用程序也运行在单独的数据库中.在一个完美的世界中,两个数据库的模式将被同步,但事实并非如此.一些迁移已在较小的数据库上运行,大多数都没有; 此外,没有诸如修订号之类的东西能够容易地识别哪些具有哪些而没有.我们想为未来的项目解决这个困境.在讨论过程中,我们提出了以下可能的行动计划,我想知道是否有人知道已经解决了这个问题的任何项目:

我们想要做的是从大型完全迁移的数据库的模式中创建一个空数据库,然后将所有较小的非迁移数据库中的数据移动到该空数据库中.如果它使事情变得更容易,那么可能会为了这个问题而特别假设没有迁移已经删除任何东西,只是添加了.

否则,如果还有其他已知的解决方案,我也想听听它们.

sql database migration schema sql-server-2008

4
推荐指数
1
解决办法
431
查看次数