以前不兼容的 ef 核心迁移,如何在 CI/CD 系统中正确绕过它们?

Previous incompatible ef core migrations, how to correctly bypass them in a CI/CD system?

所以我有一个 Dev 和一个 Staging 环境 (Azure DevOps)。

CD 管道生成 Dev 环境 DB 的迁移脚本。 后者由 Staging release 管道执行,以使 Staging DB 保持最新。

生成的脚本包含所有迁移(它不是 --from--to 脚本)。

虽然生成迁移脚本的命令使用了--idempotent参数,为了避免执行已经带到StagingDB的迁移,一些查询仍然会导致错误(当正在检查语法),例如当他们使用一些不再存在的 table 属性时。

有没有办法完全bypass/NotExecute已经应用的迁移?

我不想在生成迁移脚本时使用 --from--to,因为 CD 管道(使用 Dev 环境)无法知道Staging 环境中应用或未应用的内容。这将需要编写一个复杂的专用 Powershell 脚本(没时间)。

根据我的经验,和我的同事确认,恐怕如果你不想在生成的迁移脚本中使用from to或者使用powershell脚本来实现this ,没有其他方法可以让您绕过应用的迁移然后只应用更改的迁移脚本。

——

在本地命令行中,如果有一些脚本可以实现这个,它也可以在Azure Devops中使用。在本期中,如果您不想在 EF 迁移命令中使用 from to,那么 powershell 脚本将是唯一可以实现您想要执行的操作的方法。