我们的应用程序在同一个应用程序数据库中有两个上下文。每个上下文都被清晰地划分为它们的关注点分离。

现在看来,如果我有两个上下文,Context1 和 Context2,并且如果我只更改 Context2 的类,EF 5.0 甚至认为 Context1 也发生了变化。这似乎混淆了 EF 5.0 并且似乎在 上触发了迁移。在那次错误检测之后,产生的迁移也不一致。由于这个原因和我们自己的疏忽,我们处于一个奇怪的死胡同,很可能不得不重新重建整个数据库:((上下路径不一致)

所以, 问题:

  • EF 5.0 是否支持多个上下文的模型更改检测和迁移?在考虑在这里提问之前,我阅读了 this EF 4.3 stackoverflow questionthis MSFT post by Rowan。我不认为这是重复,因为 EF 4.3 => EF 5.0 改进目标代码优先和迁移。
  • 如果没有,你们(MSFT/Rowan!)打算什么时候支持它?

  • 谢谢

    背景故事详情(可跳过):

    我们通过代码优先的 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/

    10-13 03:15