日常档案:5月22日2019

在Azure上运行时迁移EF Core的快速技巧

关于我的EF Core 2 Pluralsight入门课程的一个问题是:

嗨,朱莉
谢谢你的课程。我有个问题。您能否建议将代码先迁移部署到生产数据库(azure)的最佳实践是什么?我的意思是我创造了
asp.net使用代码优先迁移方法的核心MVC和EF.core应用程序。部署到azure之后。如果我更改代码优先方法中的任何模式,如何更新生产数据库中的模式(而不丢失生产数据库中的数据)

我的回答是一些我认为值得在课程讨论之外分享的想法。(注意这只是高层次的)

简单的解决方案,我使用的一个路径是在启动时调用database.migrate。VS发布工作流有一个选项,您可以在发布应用程序时检查是否应用迁移。你可以在微软文档中看到在Azure上部署一个aspnet核心应用程序:

或者,您可以在program.cs文件中以编程方式进行迁移,该文件将执行任何必要的迁移。A中有一个例子pril 2019 MSDN杂志文章。如果你需要更健壮的,然后,您可以使用EF核心迁移生成脚本(可能是幂等脚本),然后将它们包含到您的更新中,并使用可以应用这些脚本的工具。如果你使用Redgate工具,也许他们的SQL改变自动化工具。另一种类型的工具是像FlywayDB (flywaydb.org)或LiquidBase。我用过集装箱的Flyway。这是我最近在一次会议上使用它的演讲:bit . ly / 30 ahgar