ASP.NET Core MVC:发布项目后,如何强制迁移更新到数据库?

ASP.NET Core MVC : once I have published a project, how do I force migrations to update to the database?

我有一个项目一直在 ASP.NET 核心 MVC 中进行,现在我已经发布了它:

我希望能够强制所有迁移到我们服务器上活动的数据库(我的本地数据库只是一个副本,因此命名和 table 名称等是相同的)。

一旦我将文件复制到服务器文件夹并 运行 它,当前 none 的迁移更新数据库并且我得到丢失的列和 tables 等错误.

我已经尝试在

发布的文件上使用 cmd
dotnet AppName.dll database update

正如许多人所建议的那样,但这根本不起作用。它似乎根本不读取命令。

有人可以直接给我一个答案吗?我一直在努力寻找一个没有解释该怎么做或旧方法不再有效的答案。

您可以使用

app.UseDatabaseErrorPage();

在你的 StartUp.Configure 中。 这将显示您从开发中了解到的应用迁移页面。

另一种方法是在开发中创建迁移脚本并将其用于生产数据库。您可以在项目目录(StartUp.cs 所在的位置)中使用 cmd 创建幂等脚本。

dotnet ef migrations script --output "migration.sql" --idempotent

这将创建一个脚本(一个新文件 migration.sql),它将迁移历史中处于先前级别的任何数据库带到当前级别。

您可以生成迁移脚本并将该脚本安装到您​​的部署环境中。优点是您可以将迁移脚本存储在一个文件夹中,并跟踪已安装的内容或下一版本需要安装的内容。

使用命令生成迁移脚本 Script-Migration:

Script-Migration -From <PreviousMigration> -To <LastMigration>

请务必在 运行 脚本之前检查 EF Documentation(Entity Framework 核心工具参考)。