我有一项在启动时使用 EF Core 运行时迁移的服务:
var migrator = dbContext.Database.GetService<IMigrator>();
await migrator.MigrateAsync("targetMigration", cancellationToken);
Run Code Online (Sandbox Code Playgroud)
为了生成迁移,我首先更新 DbContext 类,然后执行“dotnet ef migrations add”来生成迁移代码。
迁移发生后,部署的升级可能会自动回滚到以前的版本。例如,如果健康检查或测试失败。在这种情况下,我希望应用程序的先前版本能够自动回滚迁移。我知道 MigrateAsync 可以恢复迁移,但在我当前的工作流程中,迁移代码不会出现在以前版本的代码中,因此我不确定它是否能够恢复迁移。
我可以想到这样的工作流程:
更改 DbContext 并运行“dotnet ef add migration”以生成迁移代码
恢复 DbContext 更改并部署应用程序,以便迁移代码“n”存在,但 MigrateAsync 中的目标迁移和 DbContext 的版本为“n-1”
重新应用 DbContext 更改,将 MigrateAsync 更改为目标迁移“n”,然后部署应用程序
但这似乎很尴尬,我不确定是否有必要,以及是否一定有效。
使用 EF Core 部署代码优先运行时迁移的好策略是什么,这样如果部署了以前的版本,迁移可以自动回滚?
c# entity-framework database-migration entity-framework-core entity-framework-migrations
c# ×1