我有一个解决方案,我们有两个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.
我尝试过的事情:
问题是:我们有一个应用程序,其中一部分由总用户的一小部分使用,并且该部分应用程序也运行在单独的数据库中.在一个完美的世界中,两个数据库的模式将被同步,但事实并非如此.一些迁移已在较小的数据库上运行,大多数都没有; 此外,没有诸如修订号之类的东西能够容易地识别哪些具有哪些而没有.我们想为未来的项目解决这个困境.在讨论过程中,我们提出了以下可能的行动计划,我想知道是否有人知道已经解决了这个问题的任何项目:
我们想要做的是从大型完全迁移的数据库的模式中创建一个空数据库,然后将所有较小的非迁移数据库中的数据移动到该空数据库中.如果它使事情变得更容易,那么可能会为了这个问题而特别假设没有迁移已经删除任何东西,只是添加了.
否则,如果还有其他已知的解决方案,我也想听听它们.