【问题标题】:ASP.NET Core MVC : once I have published a project, how do I force migrations to update to the database?ASP.NET Core MVC:发布项目后,如何强制迁移更新到数据库?
【发布时间】:2020-04-05 05:48:07
【问题描述】:

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

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

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

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

dotnet AppName.dll database update

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

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

【问题讨论】:

    标签: asp.net-core publishing


    【解决方案1】:

    你可以使用

    app.UseDatabaseErrorPage();
    

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

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

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

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

    【讨论】:

    • 这非常有效。我必须将我的 netcoreapp 更新到 3.1 并且必须添加对 Microsoft.AspNetCore.Diagnostics.EntityFrameworkCore 的引用才能使用 app.UseDatabaseErrorPage() 因为它现在在它自己的包中。但是第一个选项效果很好。我只是在 tada 之后运行了 sql 脚本。谢谢大家
    【解决方案2】:

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

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

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2021-10-25
      • 2022-11-13
      • 2021-10-05
      • 2022-10-25
      • 2020-09-18
      • 1970-01-01
      • 2015-01-04
      相关资源
      最近更新 更多