所以我有一个EF Core项目。当我需要添加/迁移时,我会发出并更新命令:
dotnet ef数据库更新-v
这一切都很好,如果我需要更新QA、Staging、Prod数据库,我会更新appsettings.json文件中的连接字符串并运行该命令。
如果我无法从本地机器访问生产,会发生什么?如何将数据库更新为最新的迁移?
如果我记得使用实体框架(而不是.net核心(。当我部署新版本的.net应用程序时,它会尝试自动更新数据库。这个功能在.NET核心中仍然存在吗?
是的,您可以运行
dbContext.Database.Migrate();
在启动时,将数据库迁移与应用程序生命周期混为一谈通常不是一个好主意——最佳做法是让应用程序尽可能快速简单地启动,因为应用程序启动失败很难远程诊断,而且迁移会带来很多不受欢迎的复杂性。
另一种选择是将迁移操作作为部署的一部分来运行。这取决于您使用的部署方法,但例如,如果您使用CI服务器,您将能够运行
dotnet ef database update
复制新代码之后,但启动应用程序备份之前。