具有多个上下文的EF 5代码优先迁移?

时间:2012-08-04 16:50:17

标签: entity-framework entity-framework-5 database-migration ef-migrations

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

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

所以, 问题:

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

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

    我们通过代码优先的流畅api,添加测试数据,测试它然后添加“实时”(alpha阶段)数据,仔细设置两个'schemas'。 Context1带有关键的“实时”信息,因此我们保持不变,然后我通过向代码第一类添加新成员(db语言中的表中的新列)来修改第二个上下文(此处为context2)。当我运行该应用程序时,它似乎已经检测到已经改变了!在我们的最后,认为不会调用未更改的Context1,我们没有注释掉 我们在启动期间添加了Database.SetInitializer<Context1>(new DropCreateDatabaseIfModelChanges<Context1>());。所以它消灭了我们现在成熟的关键表!是的,我们应该把它拿出来,因为简单地锁定类定义还不够好。

1 个答案:

答案 0 :(得分:4)

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

顺便说一下。 EF is open source所以你可以自己贡献并添加对多个上下文的支持。