以前不兼容的 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
参数,为了避免执行已经带到Staging
DB
的迁移,一些查询仍然会导致错误(当正在检查语法),例如当他们使用一些不再存在的 table 属性时。
有没有办法完全bypass/NotExecute已经应用的迁移?
我不想在生成迁移脚本时使用 --from
、--to
,因为 CD 管道(使用 Dev
环境)无法知道Staging
环境中应用或未应用的内容。这将需要编写一个复杂的专用 Powershell 脚本(没时间)。
根据我的经验,和我的同事确认,恐怕如果你不想在生成的迁移脚本中使用from
to
或者使用powershell脚本来实现this ,没有其他方法可以让您绕过应用的迁移然后只应用更改的迁移脚本。
——
在本地命令行中,如果有一些脚本可以实现这个,它也可以在Azure Devops中使用。在本期中,如果您不想在 EF 迁移命令中使用 from
to
,那么 powershell 脚本将是唯一可以实现您想要执行的操作的方法。
所以我有一个 Dev
和一个 Staging
环境 (Azure DevOps)。
CD
管道生成 Dev
环境 DB
的迁移脚本。
后者由 Staging release
管道执行,以使 Staging
DB
保持最新。
生成的脚本包含所有迁移(它不是 --from
、--to
脚本)。
虽然生成迁移脚本的命令使用了--idempotent
参数,为了避免执行已经带到Staging
DB
的迁移,一些查询仍然会导致错误(当正在检查语法),例如当他们使用一些不再存在的 table 属性时。
有没有办法完全bypass/NotExecute已经应用的迁移?
我不想在生成迁移脚本时使用 --from
、--to
,因为 CD 管道(使用 Dev
环境)无法知道Staging
环境中应用或未应用的内容。这将需要编写一个复杂的专用 Powershell 脚本(没时间)。
根据我的经验,和我的同事确认,恐怕如果你不想在生成的迁移脚本中使用from
to
或者使用powershell脚本来实现this ,没有其他方法可以让您绕过应用的迁移然后只应用更改的迁移脚本。
——
在本地命令行中,如果有一些脚本可以实现这个,它也可以在Azure Devops中使用。在本期中,如果您不想在 EF 迁移命令中使用 from
to
,那么 powershell 脚本将是唯一可以实现您想要执行的操作的方法。