efcore 更新关联表_如何在生产环境下用好EFCore

原文链接:https://www.thereformedprogrammer.net/handling-entity-framework-core-database-migrations-in-production-part-2/

作者:Jon P Smith

在生产中运用EFCore的模式实战

这是使用EF Core迁移数据库的系列文章中的第二篇。本文着眼于将迁移应用于数据库,并从第1部分开始,该部分介绍了如何创建迁移脚本。如果您还没有阅读第1部分,那么本文的某些部分将毫无意义,因此这里是第1部分的快速回顾。

•可以将两种类型的迁移应用于数据库:•添加新的表,列等,称为不间断的更改(简单)。•更改列/表并需要复制数据,这称为重大更改(困难)。•将迁移应用于数据库的主要方法有两种•使用EF Core迁移功能•使用EF Core创建迁移,然后手动修改迁移。•使用第三方迁移构建器在C#中编写迁移。•使用SQL数据库比较工具比较数据库并输出SQL更改脚本。•通过复制EF Core的SQL编写自己的SQL迁移脚本。

因此,既然您现在知道如何创建迁移脚本,那么我将研究可以将迁移应用于生产数据库的不同方式,以及这些方式所具有的利弊。

TL; DR –内容摘要

注意:单击链接可直接转到涵盖该点的部分。

•您具有影响迁移方法可以使用的应用程序的类型。•您必须考虑可能发生的错误并制定计划。•有四种方法可以将迁移应用于数据库•在启动时调用context.Database.Migrate()Very Easy,但是存在一些严重的问题,限制了它的实用性。•通过控制台应用程序调用context.Database.Migrate()-Easy,并且效果很好,尤其是在部署管道中•将EF Core迁移输出为SQL脚本并在目标数据库上执行该脚本 -Hard,但是却能提供很好的控制。•使用数据库迁移应用程序工具来应用您自己的SQL脚本 -Hard,但是您却可以很好地控制。•应用迁移的三个不同级别。•在迁移数据库时停止应用程序是最安全的选择,但并非总是可能的。•在应用程序运行时,可以将某些(但不是全部)不间断的更改应用于数据库。•对于连续服务应用程序(7*24小时运行的服务),要应用重大更改需要五个步骤。

场景分析–您的产品是哪种应用程序?

在第1部分中,我们着重于创建“有效”的迁移,以及迁移是不间断的变更还是重大变更(请参阅本文开头的快速定义,或第1部分中的此链接。

现在,我们正在考虑将迁移应用于数据库,但是我们拥有的选项取决于正在访问数据库的一个或多个应用程序。这是您需要考虑的问题。

1.是只有一个应用程序访问该数据库,还是您的应用程序是横向扩展的Web应用程序,即,同时运行多个版本的应用程序。如果您的应用程序是横向扩展,则将删除其中一个选项。2.您可以在将迁移应用到数据库时停止应用程序,还是您的应用程序提供7*24小时连续服务?在应用重大变更方面,更新连续服务应用程序会带来一些挑战。

在迁移生产数据库时,有点偏执是可以的。

正如我在第1部分末尾所说的那样-当您将迁移应用于生产数据库时,最恐怖的部分到来了。更改包含关键业务数据需求(需求!)的数据库,请仔细计划和测试。您需要考虑如果(何时!)迁移因错误而失败时该怎么办。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值