entity-framework - Entity Framework 6 Code First 迁移 - 用于生产的多个分支

标签 entity-framework ef-code-first entity-framework-6 entity-framework-migrations

在我的项目中,我们有一个分支模型,它有一个单独的开发分支,每个版本都有一个单独的分支。它可能看起来像这样:

dev         ______       ______
           /      \     /      \
master  --+---+----+---+---+----+----+--- (...)
           r1  \______/  r2 \_______/

所以我们在 dev 上开发,将它合并到 master,然后我们创建一个发布分支(r1,r2,...)。

我们想使用 EF 6(手动而非自动)迁移,但我们有一个不知道如何回答的问题。

想象一下:
dev         _(1)__       ____(4)
           /      \     /      \
master  --+---+----+---+---+----+-(5)*-+--- (...)
           r1  \_(2)__/  r2 \(3)______/

每个数字都是一次迁移。它们已被添加到每个分支的源代码控制中,并已应用于我们项目的生产实例的数据库(我们支持多个版本有一段时间只是为了修复)所以我们不能降级它们,它们只能使用 Up()。星号标记我们要分析的时间点。我们希望迁移以这种方式工作:
  • r1 数据库仅应用了迁移 (2)
  • r2 数据库已应用 (1)、(2) 和 (3)
  • master 数据库已应用 (1)、(2)、(4) 和 (5)
  • dev 数据库已应用 (1)、(2) 和 (4)

  • 而且:
  • 我们不能丢失数据库中的一点数据
  • r1 数据库必须能够无错误地更新为 r2(或任何其他 future 版本)数据库,因此它具有与与其代码对应的所有 r2 数据库(创建为 r2 或从早期版本更新)相同的数据库结构第一个模型。

  • 可以做到吗?如果是,如何?

    如果您需要更多详细信息,请询问。

    最佳答案

    我可以尝试解释你在每种情况下可以做什么,但它非常复杂,我无法像这里解释的那样解释它:

    Code First Migrations in Team Environments

    虽然它很复杂,您必须经常引用此文档来合并分支,但如果您遵循此文档,您会发现它解决了您的所有问题。

    免责声明:我知道 SO 应该是自包含的,但解释是如此复杂和冗长,我什至无法在这里添加摘要。我希望链接的 MSDN 文档不会消失。

    关于entity-framework - Entity Framework 6 Code First 迁移 - 用于生产的多个分支,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24685958/

    相关文章:

    c# - EF 代码首先是 : How to delete a row from an entity's Collection while following DDD?

    wpf - 使用迁移到 LocalDB 的 CodeFirst,我可以指定*在哪里*创建数据库吗?

    c# - 将只读属性分配给 Entity Framework 中的新对象

    sql - 为什么没有主键的表是一个坏主意?

    c# - Sqlite Entity Framework 无法在更新时打开文件

    c# - Entity Framework 故意禁用自动增量

    mysql - .NET 4.0、EF 4.4 和 MySQL 的连接字符串是什么?

    c# - EF 代码优先 : Mapping nontable objects with Fluent API

    c# - EF 代码优先 : Either the parameter @objname is ambiguous or the claimed @objtype (COLUMN) is wrong

    entity-framework - 如何获取 EntityFramework NuGet 包的 PDB 文件?