在运行时应用迁移有什么好处?



摘自EF Core文档:

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

myDbContext.Database.Migrate();

警告

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

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

在运行时应用迁移有什么好处?

原因:

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

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

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

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

一言以蔽之:应用迁移是一种危险的操作。除非您可以确保一切正常,否则不建议您自动更新数据库。