entity-framework-4.3 - 使 EF4.3 Code First 迁移忽略挂起的迁移

标签 entity-framework-4.3 entity-framework-migrations

我有一个最近使用 DbContext.Database.Create() 创建的数据库的本地实例,所以 __MigrationHistory表存在 InitalCreate与当前代码匹配的条目。

但是,Migrations 文件夹中存在一些基于代码的迁移。这些将在我们的开发和登台环境中运行,以使这些数据库与代码保持一致。但是,我不需要在本地应用它们,因为我使用当前代码创建了数据库。

我现在需要对模型进行更改并创建相应的迁移。但是当我运行 Add-Migration TestMigration ,我收到以下错误

Unable to generate an explicit migration because the following explicit 
migrations are pending: 

[201203271113060_AddTableX, 
 201203290856574_AlterColumnY]

Apply the pending explicit migrations before attempting to generate 
a new explicit migration.

在这种情况下我该怎么办?我不能将 Add-Migration 工具指向另一个环境,因为它不能保证版本与我在本地拥有的版本相匹配。我想要一个只匹配我所做的更改的迁移。

似乎我有几个选择,但没有一个是理想的:
  • 从 Migrations 文件夹中删除其他迁移,运行 Add-Migration 命令,升级数据库,然后还原旧迁移。这很简单,但似乎有点hackish。
  • 恢复到应用了第一次迁移的源代码管理中模型的版本,然后构建它并使用它来创建数据库。然后获取最新版本,应用所有迁移,然后我准备添加我的迁移。这似乎是一个很大的努力!
  • 手动创建迁移。

  • 有没有人对如何管理这个有任何建议?

    最佳答案

    我们计划使用您的选项 #1 的变体...

    我们的标准操作程序是为每次迁移生成一个 SQL 脚本(使用 update-database 的 -script 选项),以便通过 InstallShield 将 SQL 脚本应用于最终用户“生产”数据库(我们计划使用 EF update-database 仅用于开发者数据库)。

    因此,我们的 Migrations 文件夹中有所有迁移的迁移 .cs 文件和相应的 .sql 文件。

    因此,我们没有从 Migrations 文件夹中删除迁移(如您在 #1 中提出的那样),而是使用 SQL Mgmt Studio 手动应用仅插入 _MigrationHistory 的 .sql 文件部分。

    这使本地数据库的 _MigrationHistory 与已合并到该数据库中的更改保持同步。

    但这是一团糟,我们仍在寻找更好的解决方案。

    猫爸爸

    关于entity-framework-4.3 - 使 EF4.3 Code First 迁移忽略挂起的迁移,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9924946/

    相关文章:

    c# - EF4 : Why does proxy creation have to be enabled when lazy loading is enabled?

    c# - Entity Framework 数据加载策略对比

    c# - 扩展 Identity 2 中 IdentityUserRole 的 PrimaryKey

    ef-code-first - MSI 可以使用 EF Code First 吗?

    entity-framework - 识别关系并插入子实体会导致 "Cannot insert explicit value for identity column in table"

    c# - Entity Framework 中 "The RelatedEnd cannot be returned by this RelationshipManager"异常的根本原因是什么?

    ef-code-first - 如何在 Entity Framework 4.3 Code First 中禁用 __MigrationHistory 表?

    asp.net - 带有外部 connectionStrings.config 文件的 WebPublish Code-First 迁移

    database - "Reverting automatic migration"是什么意思?

    c# - 从 EF 迁移脚本中查找目录路径的最佳方法是什么?