【问题标题】:EF Add-Migration indicates "No pending explicit migrations" but Update-Database complains "..there are pending changes"EF Add-Migration 表示“没有挂起的显式迁移”,但更新数据库抱怨“..有挂起的更改”
【发布时间】:2019-08-15 16:31:48
【问题描述】:

我在 Entity Framework 代码首次迁移时经常遇到以下情况。我添加了一些迁移并成功地用它们更新了数据库。当稍后我希望添加新迁移时,Add-Migration 命令抱怨它“无法生成显式迁移,因为以下显式迁移正在等待......”。即,它似乎忘记了它之前已经应用了这些迁移,因此现在不应将它们视为待处理。如果我尝试解决此问题,Update-Database 会指示“无法更新数据库以匹配当前模型,因为有 [新] 未决更改...”。我不明白为什么 EF 迁移会不同步,因为我只是对模型进行更改。

【问题讨论】:

  • 不确定它会有多大帮助,但请参阅此问题/答案:stackoverflow.com/questions/16952413/…
  • 谢谢史蒂夫。看来此问题是由 VS 2013 错误引起的,即当删除引用然后从数据库上下文项目的 bin 文件夹中再次添加时,VS 2013 没有正确更新 DLL 引用(而不是项目引用) (即使在两者之间调用了 Clean Solution)。即使在后续编译之后,引用项目的 bin 也不会显示更新的数据库上下文 DLL。因此,DLL 的模型与已由数据上下文项目更新的数据库相比已过时。
  • 您应该将其发布为您自己问题的答案,这样当其他人搜索它时,他们可能会找到您的解释。

标签: entity-framework entity-framework-migrations


【解决方案1】:

对我而言,问题在于我们已将迁移的命名空间重命名为 2014123456_Initial.cs。
但是 VS 并没有在其关联的 2014123456_Initial.Designer.cs 中重新生成命名空间。

一旦将 Designer.cs 更改为使用相同的命名空间,它就会重新开始工作。

【讨论】:

  • 非常感谢!我花了几个小时试图找出问题!此处相同:.Designer.cs 中的命名空间!
【解决方案2】:

我遇到了同样的问题,解决方法是:

  1. 清洁溶液;
  2. 构建启用了迁移的项目(只是为了确保);
  3. 再次构建解决方案;

这几乎等同于使用“构建”菜单中的“重建解决方案”选项。

【讨论】:

    【解决方案3】:

    我遇到了完全相同的问题,但无法解决。

    添加到 IamDOM 解决方案还添加一个空的迁移和更新数据库

    例如:

    添加迁移测试

    更新数据库

    它现在对我有用几次。

    【讨论】:

      【解决方案4】:

      我发现 VS 不知何故弄糊涂了,实际上并没有将迁移添加到 .csproj。关闭,重新打开 VS,然后在项目中重新包含迁移并保存所有工作。

      【讨论】:

        猜你喜欢
        • 2015-01-06
        • 1970-01-01
        • 1970-01-01
        • 2020-05-29
        • 2013-02-05
        • 1970-01-01
        • 2016-05-29
        • 1970-01-01
        • 2018-02-02
        相关资源
        最近更新 更多