简单地说,它没有。
EF 迁移和 Azure 部署是两种截然不同的野兽。Azure 部署为您提供了许多选项,包括更新和暂存槽,您可能已经看过
在 Azure 应用服务中部署 Web 应用程序,对于其他读者来说,这是一个很好的起点。
通常,Azure 部署模型关注与 IIS/网站堆栈的活动连接,通常更新通过将部署的实例从负载均衡器池中取出并将流量重定向到其他实例来确保不间断的用户访问。然后,它会在实例中逐一更新。
这意味着在任何时间点,在更新部署期间,您的代码都会同时运行多个版本。
如果您的 EF 模型在代码版本之间没有更改,那么 Azure 部署就像一个魅力,用户甚至不会知道它正在发生。但是,如果您需要在迁移过程中应用迁移,请注意
一般来说,EF 只会在代码和数据库版本匹配的情况下加载模型。使用 EF Migrations 并同时支持模型的多个代码版本非常困难
EF 迁移主要由数据库初始化程序控制。有关详细信息,请参阅使用迁移升级数据库。
作为开发人员,您可以选择升级数据库的方式和时间,但要知道,如果您使用的是迁移和部署更新:
- 新代码代码不会轻易针对旧数据模式运行。
- 如果旧代码/应用程序重新启动,许多默认初始化策略将尝试回滚模式,如果发生这种情况,请参阅第 1 点。;)
- 如果您绕过 EF 模型加载错误版本的架构,当代码尝试使用不存在的架构元素时,您将遇到异常和一般故障
在活动站点上管理 EF 迁移的最简单方法是关闭站点的所有实例以进行包含 EF 迁移的部署 - 您可以使用维护页面或重定向,这取决于您。
如果您遇到这个麻烦,最好手动应用数据库更新,然后如果失败,您可以轻松中止部署,因为它还没有开始!
否则,部署更新和启动的第一个实例将运行迁移,如果初始化程序已配置为这样做...
如果您绝对必须持续部署站点代码/内容和模型更新,那么 EF 迁移可能不是开始使用的最佳工具,因为您会发现它对于这种场景的 OOTB 非常严格。