【问题标题】:Entitfy Framework: everything is broken when I change schema实体框架:当我更改架构时,一切都被破坏了
【发布时间】:2014-10-13 17:05:47
【问题描述】:

我将 EF 与代码优先方法一起使用。

我有一堂课:

public class Cat {
// ...
}

然后我为它们添加一些属性和迁移。所以我有几个现有的迁移。然后我创建抽象类:

public abstract class Animal {
// ...
}

并从 Animal 继承 Cat:

public Cat : Animal {
// ...
}

当我这样做并运行 add-migration 时,我遇到了我无法解决的问题。 EF 给我一个错误:

无法生成显式迁移,因为以下原因 显式迁移正在等待:[...]。应用待处理的显式 在尝试生成新的显式迁移之前迁移。

这是因为架构存储在 __MigrationHistory 中。当 EF 尝试将当前架构与从数据库(来自 __MigrationHistory)获取的架构进行比较时,它会失败。

当我删除所有迁移并从头开始创建数据库时,一切都很好。

但我不想在架构更改时删除整个数据库。

如何使用 EF 处理架构更改?

这里是similar post,但没有任何好的解决方案。

【问题讨论】:

    标签: entity-framework


    【解决方案1】:

    如果您运行了 Add-Migration 而没有运行 Update-Database,则运行它。

    但有时你会运行以下命令:

    PM>add-migration migration1
    

    然后对您的模型进行一些更改,在这种情况下,如果您想添加另一个迁移,您会收到提到的错误,因此您有 2 个选项:

    1. 运行 Update-Database 将 migration1 的待定更改应用到数据库,然后添加新的迁移。
    2. 运行add-migration migration1 -force 将所有挂起的迁移添加为migration1,然后运行update-database

    【讨论】:

      【解决方案2】:

      在运行 Add-Migration 之前尝试运行 Update-Database

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多