c# - 无法在本地运行 master,因为我的 EF Code First 迁移不同步

标签 c# entity-framework

我在 EF6 代码优先迁移时遇到问题。

当我在较低的子分支中为新事物进行开发更改时,我在该分支中进行了迁移,并且我的数据库也进行了这些更改。

当我切换到主分支(我不想合并)并尝试在本地运行它时,我的迁移存在于我的数据库中,但不存在于该代码分支中。

我正在尝试修复错误以从主分支进入生产环境,并且不想运行任何新的迁移,但它告诉我:

The model backing the 'DummyDBContext' context has changed since the database was created.

我该如何解决这个问题?

最佳答案

你这里确实有两个问题。

  1. 存储在数据库中(在 _MigrationHistory 表中)的迁移历史记录与 master 分支上的迁移不同步。这就是导致抛出 InvalidOperationException 的原因。
  2. 实际的数据库架构现在与 EF 基于 master 分支中存在的迁移来理解架构的方式不同步。根据您当前的代码(在 master 中),架构应该看起来确实像您切换到 subBranch 并进行更改之前的样子。

最简单的方法是在切换回主分支之前回滚“subBranch”迁移(通过调用 Update-Database -TargetMigration [NameOfPreviousMigration])。缺点是每次切换回子分支时都必须重新运行迁移。

否则,解决这个问题的方法将需要:

  1. 从 _MigrationHistory 表中手动删除迁移历史记录。
  2. 通过将 DbInitializer 设置为 DropCreate 来回滚对数据库架构所做的任何更改(这将删除数据库中的所有数据,因此请注意/这一项)或手动撤消迁移对架构所做的任何更改。 如果您确实走这条路线,那么当您以任何一种方式切换回 subBranch 时,都需要从头开始重新运行迁移。

祝你好运;)

关于c# - 无法在本地运行 master,因为我的 EF Code First 迁移不同步,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25675829/

相关文章:

c# - 双工命名管道 - 单个管道上的最大客户端数量

c# - Entity Framework 一对一导航属性未加载

c# - Entity Framework : Why do navigation properties disappear after a group by?

c# - "safe"可查询的服务层设计?

asp.net-mvc - 将 Glimpse 添加到引用 EF 项目的 MVC 项目的正确方法是什么?

c# - 为什么不支持 Convert.ToDouble(char)?

c# - 使用 AutoMapper 时如何跳过自定义验证属性?

c# - 从列表字符串 c# 中删除 null

c# - ASP.Net 网站项目的程序集名称

asp.net - 我应该有多少个 DBContext