【问题标题】:EntityFramework EF won't let me re-scaffoldEntityFramework EF 不会让我重新搭建脚手架
【发布时间】:2015-12-21 12:47:51
【问题描述】:

我已经多次成功地完成了这种程序,但第一次,它似乎不起作用。我想合并我的应用程序的两个分支,它们具有不同的 Code First 迁移状态。我知道在两个版本的开发过程中,两个版本的架构都发生了变化,导致了不同的快照,所以我需要重新搭建我的合并迁移以匹配数据库快照,基本上是following this guide, Option 2。在给定的项目中,我有几十个迁移,其中多个已按照描述成功合并和重新搭建。

所以我正在做的是将数据库状态带到迁移之前的数据库版本(例如Update-Database -targetMigration 201511261243087_BeforeMigration,指南的第 4 步)并以正确的顺序重新构建合并的迁移,以便它们可以重新构建元数据。

当我使用命令Add-Migration 201512170931290_FirstMergedMigration 时,我收到以下错误消息:

无法生成显式迁移,因为以下原因 显式迁移待定: [201512170931290_FirstMergedMigration, 201512140935307_SecondMergedMigration]。应用待处理的显式 在尝试生成新的显式迁移之前迁移。

什么?我没想到会这样。我期望该命令重新构建现有迁移的元数据并更新架构快照。但它假设我想添加一个新的迁移。 -force 标志也无济于事。

当我按照推荐的步骤和Update-Database 进行操作时,EF 将创建一个新的迁移,称为:201512210931290_201512170931290_FirstMergedMigration。现在这真是太疯狂了。

我希望有一个单独的命令来重新脚手架元数据,这样它可能会显示更清晰的错误消息。

有人看过这个吗?

更新:

见我的own answer

【问题讨论】:

    标签: c# entity-framework entity-framework-6 entity-framework-migrations


    【解决方案1】:

    好的,看来我在这里找到了问题...似乎我尝试重新构建的第一次迁移,没有包含任何架构更改,因为它只是添加索引等。看来 EF 会尝试如果未检测到给定迁移中的更改,则添加新迁移。我能够做的是跳过那个迁移,继续下一个,这导致了预期的:

    仅用于迁移的设计器代码 '201512140935307_SecondMergedMigration' 被重新搭建。到 重新脚手架整个迁移,使用 -Force 参数。

    我检查了数据库,__MigrationHistory 看起来不错,表格也是如此。如果 EF 生成了更好的错误消息,而不是尝试添加一个新的迁移,而我显然试图重新搭建脚手架,这将意味着更少的麻烦。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-06-18
      • 2017-03-31
      • 2021-05-10
      • 1970-01-01
      • 1970-01-01
      • 2018-01-11
      • 2016-10-25
      • 1970-01-01
      相关资源
      最近更新 更多