entity-framework - Entity Framework - Azure 上的迁移 - 现实场景 - 降级数据库

标签 entity-framework azure entity-framework-migrations

这个问题已经在我脑海中萦绕了很长一段时间,幸运的是我还不需要这个答案,但我仍然想知道最好的方法。假设我们有以下设置:

  • Web API 构建于 Microsoft Azure 上的 Entity Framework (代码优先)之上。
  • 已启用自动迁移(自动迁移到最新版本)
  • 我们有两个槽位 - 生产登台(两者都有单独的数据库)

让我们看看这个场景:

  1. 我们部署新版本到暂存槽(验证一切正常)
  2. 临时数据库会自动迁移到最新版本
  3. 我们交换登台实例到生产
  4. 迁移生产数据库上运行
  5. 我们意识到,无论出于何种原因,我们需要降级并迁移到以前的版本。

好的,现在我的所有问题都来了:

  1. 我们如何将数据库降级到以前的版本 - (因为我认为将 VS 连接到生产并从包管理器控制台运行降级命令不是一个好主意)。
  2. 工作流程是否如下:使用当前实例降级数据库(这将导致网络应用短暂停机,因为迁移不匹配),然后将暂存槽(旧)实例交换到生产槽?

我对此已经摸不着头脑有一段时间了,因为我看不到任何理想的方法来做到这一点 - 因为当迁移不匹配时 Entity Framework 就会中断。

最佳答案

您可以创建一个 SQL 脚本来降级数据库。请参阅本文的“获取 SQL 脚本”部分。

https://learn.microsoft.com/nb-no/ef/ef6/modeling/code-first/migrations/index#specific

在工作流程上,我们“解决”这个问题的方法是当前版本的数据库应该支持旧版本的应用程序。

某个字段或表只有在多个版本都没有使用过之后,才算真正被删除。这种方法也有缺点,数据库可能会变得臃肿且困惑。但它确实提供了能够安装旧版本应用程序的灵 active 。

关于entity-framework - Entity Framework - Azure 上的迁移 - 现实场景 - 降级数据库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56393669/

相关文章:

c# - 如何使用共享访问策略连接字符串在azure服务总线中创建SAS策略

postgresql - 迁移尝试创建已经存在的序列

.net - 更改实体的可访问性

asp.net-mvc - ASP.NET MVC 与 nTier 关注点分离

c# - 如何将自定义复杂类型转换为另一个自定义复杂类型

model-view-controller - Entity Framework 实现代码优先迁移并防止数据丢失

c# - -TargetDatabase 标志是否已在 EF 4.3 迁移中重命名?

c# - LINQ 和 SQL 中看似等效的查询返回不同的结果

基于 Azure 的 Umbraco 网站 - 登录时,我会立即退出

azure - 如何使用 Cloud Explorer 在 VS 2015 中使用连接字符串添加帐户?