【问题标题】:What are the disadvatages of applying migrations at runtime?在运行时应用迁移有什么缺点?
【发布时间】:2020-04-07 15:53:30
【问题描述】:

摘自EF Core documentation

某些应用可能希望在启动期间在运行时应用迁移,或者 第一次运行。使用 Migrate() 方法执行此操作。

myDbContext.Database.Migrate();

警告

这种方法并不适合所有人。虽然它非常适合具有 本地数据库,大多数应用程序将需要更强大的部署 像生成 SQL 脚本这样的策略。

这种方法的主要好处似乎是保持部署过程简单。 该文档指出,这对于大多数应用程序来说是不够的。为什么不呢?

在运行时应用迁移有什么缺点?

【问题讨论】:

  • 您不能照看查询计划。随着数据的增加而变化。或者跨 MySQL、PostgreSQL、sql server 等...如果您的应用程序支持多种数据库技术。安全。应用程序经常被限制更改表或创建表。这涉及具有提升的权限。如果您的应用程序受到损害,这并不好。小汤米桌。
  • 我看不出这样做有什么缺点,除非你犯了大错。例如,如果您从表中删除一列,您必须知道生产中的所有数据都将在部署和重新启动您的 api 时删除。

标签: asp.net-core entity-framework-core database-migration entity-framework-migrations


【解决方案1】:

原因:

  • 迁移可能会导致数据库丢失数据。
  • 您可能在一个过时的分支上工作。
  • 迁移可能会失败。
  • 良好的应用设计不会创建或删除表。

迁移可能会导致您的数据库丢失数据。就像您的迁移可能会删除一些表。并非所有环境都希望这样做。这在您的开发环境中可能是安全的,但在生产环境中非常危险。这是一些应用程序不自动迁移的主要原因。

现在我们通常使用 git 或其他版本控制工具进行编码。切换分支和与他人协作更加简单。但通常我们的数据库不会使用您的代码切换分支。如果您切换到另一个分支并只运行应用程序,迁移可能会破坏您的数据库并且您很难恢复。

迁移可能由于连接原因或数据冲突而失败。如果您自动迁移数据库,您将不会收到警告,这很危险,因为您的服务在线时会出现更大的问题。

一句话:应用迁移是一种危险的行为。除非您可以确保一切正常,否则不建议您自动更新数据库。

【讨论】:

    猜你喜欢
    • 2014-06-15
    • 2019-10-25
    • 1970-01-01
    • 2015-12-24
    • 2010-11-28
    • 2014-12-30
    • 1970-01-01
    • 2018-02-07
    • 1970-01-01
    相关资源
    最近更新 更多