我们的应用程序在同一个应用程序数据库中有两个上下文。每个上下文都被清晰地划分为它们的关注点分离。
现在看来,如果我有两个上下文,Context1 和 Context2,并且如果我只更改 Context2 的类,EF 5.0 甚至认为 Context1 也发生了变化。这似乎混淆了 EF 5.0 并且似乎在 和 上触发了迁移。在那次错误检测之后,产生的迁移也不一致。由于这个原因和我们自己的疏忽,我们处于一个奇怪的死胡同,很可能不得不重新重建整个数据库:((上下路径不一致)
所以, 问题:
谢谢
背景故事详情(可跳过):
我们通过代码优先的 fluent api 仔细设置了两个“模式”,添加了测试数据,对其进行了测试,然后添加了“实时”(alpha 阶段)数据。 Context1 包含关键的“实时”信息,因此我们保持不变,然后我修改了第二个上下文(此处为
context2
),将新成员添加到代码第一类(数据库术语表中的新列)。当我运行该应用程序时,它似乎已检测到两者都已更改!最后,认为不会调用未更改的 Context1,我们没有注释掉我们在启动期间添加的
Database.SetInitializer<Context1>(new DropCreateDatabaseIfModelChanges<Context1>());
。所以它消灭了我们现在增长的关键表!是的,我们应该删除它,因为简单地锁定类定义还不够好。 最佳答案
单个数据库的多个上下文还不能很好地工作,但应该有一个简单的解决方法。再创建一个上下文,除了迁移外,它永远不会在您的应用程序逻辑中使用。将来自其他上下文的所有实体的实体映射添加到用于数据库创建/迁移的中央上下文。
顺便提一句。 EF is open source 这样你就可以自己贡献和添加对多个上下文的支持。
关于entity-framework - 具有多个上下文的 EF 5 代码优先迁移?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/11810315/