首页 > 解决方案 > ASP.NET Core MVC:发布项目后,如何强制迁移更新到数据库?

问题描述

我有一个我一直在 ASP.NET Core MVC 中工作的项目,现在我已经发布了它:

在此处输入图像描述

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

一旦我将文件复制到服务器文件夹并运行它,目前没有任何迁移更新数据库,并且我得到缺少列和表等错误。

我尝试在已发布的文件上使用 cmd

dotnet AppName.dll database update

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

在此处输入图像描述

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

标签: asp.net-corepublishing

解决方案


您可以使用

app.UseDatabaseErrorPage();

在您的 StartUp.Configure 中。这将显示您从开发中知道的应用迁移页面。

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

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

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


推荐阅读