4

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

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

所以,问题:

  1. EF 5.0 是否支持多个上下文的模型更改检测和迁移?在考虑在这里提问之前,我阅读了这个 EF 4.3 stackoverflow 问题以及Rowan 的这篇 MSFT 帖子。我不认为这是重复,因为 EF 4.3 => EF 5.0 改进的目标是代码优先和迁移。
  2. 如果没有,你们什么时候(MSFT/Rowan!)计划支持它?

谢谢

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

我们通过代码优先的 fluent api 仔细设置了两个“模式”,添加了测试数据,对其进行了测试,然后添加了“实时”(alpha 阶段)数据。Context1 包含关键的“实时”信息,因此我们保持不变,然后我context2通过向代码第一类添加一个新成员(以 db 术语表中的新列)修改了第二个上下文(此处)。当我运行该应用程序时,它似乎检测到两者都已更改!最后,考虑到不会调用未更改的 Context1,我们没有注释掉 Database.SetInitializer<Context1>(new DropCreateDatabaseIfModelChanges<Context1>());我们在启动期间添加的内容。所以它消灭了我们现在重要的桌子!是的,我们应该把它去掉,因为简单地锁定类定义还不够好。

4

1 回答 1

4

单个数据库的多个上下文还不能很好地工作,但应该有一个简单的解决方法。再创建一个上下文,除了迁移之外,它永远不会在您的应用程序逻辑中使用。将来自其他上下文的所有实体的实体映射添加到用于数据库创建/迁移的中央上下文。

顺便提一句。EF 是开源的,因此您可以自己贡献和添加对多个上下文的支持。

于 2012-08-04T22:05:50.257 回答