【问题标题】:Create Migration based on current SQL Server schema基于当前 SQL Server 架构创建迁移
【发布时间】:2018-08-07 13:36:37
【问题描述】:

我们的开发团队从一家多年来构建和维护不佳的供应商处获得了一个 ASP.NET MVC C# Web 应用程序。它从代码优先迁移开始,但在某个时间点对数据库进行了未通过迁移完成的更改。现在我们有一个迁移不匹配的生产数据库。我现在的问题是,有人知道从当前模式创建迁移的方法吗?有点像反向迁移,采用当前模式,并为其当前状态创建代码优先迁移。

如果没有,请接受有关应采取哪些步骤以使迁移与当前生产数据库匹配的建议。

【问题讨论】:

  • 最终目标是什么?迁移是达到目的的一种手段,而不是目的本身。
  • 如果目标是使数据库始终可部署,那么您可以使用数据库项目来管理数据库模式,而不是先使用代码。 (数据库优先)
  • 最终目标是进行能够一致地创建当前生产数据库的迁移。而现在,由于迁移之外所做的更改,运行迁移将创建一个与当前实时版本不同的数据库。
  • 我不熟悉数据库项目?我更喜欢首先使用 EF 代码,因为我们已经实现了一些但不是完整的架构
  • 如果这不起作用,请通过删除表来重置迁移,删除旧代码迁移,然后添加新的基线迁移,其唯一目的是拍摄当前状态的快照。 add-migration NewBaseline -IgnoreChanges(EF6 语法)。现在后续的迁移将只包含差异。

标签: c# sql-server asp.net-mvc entity-framework-migrations


【解决方案1】:

答案最终是删除所有以前的旧迁移,添加基于当前模型架构的新迁移并从那里重新开始。我们看到生产数据库仍然存在一些差异,例如新的外键和丢失的索引。但这是一个很好的起点,现在允许我们启动数据库并在新环境中运行我们的播种机。

【讨论】:

    猜你喜欢
    • 2013-03-08
    • 2011-11-14
    • 2017-10-13
    • 1970-01-01
    • 1970-01-01
    • 2014-07-20
    • 2011-01-29
    • 1970-01-01
    • 2020-05-29
    相关资源
    最近更新 更多