首页 > 解决方案 > 如何在 Azure 部署的应用程序中应用数据库代码优先迁移?

问题描述

我刚刚将一个应用程序部署到一个 azure App Service 中。我的项目确实有要应用的迁移。但我无法通过使用 azure app 命令行来应用它们

dotnet ef 数据库更新

D:\home\site\wwwroot> 找不到匹配命令“dotnet-ef”的可执行文件

如何远程应用它们?

标签: .netazureef-code-firstdotnet-cli

解决方案


对于dotnet-ef,我假设您在谈论 Entity Framework Core。我尝试dotnet ef database updateD:\home\site\wwwrootKUDU 和 VS 的 Package Manager Console 下运行,我可能会遇到与您提到的相同的问题。

我发现了一个类似的问题没有找到匹配命令“dotnet-ef”的可执行文件

DotNet CLI 只能在项目目录中解析“dotnet-ef”。

我可以通过 Powershell运行命令dotnet ef migrations adddotnet ef database update有关详细的命令用法,您可以关注EF Core .NET Command-line Tools

如何在 Azure 部署的应用程序中应用数据库代码优先迁移?

根据我的理解,你不能那样做。您可能需要update-database在 VS 的 Package Manager Console 下手动运行 vivek nuna 回答,或者您可以使用 Powershell 和 cd 到您的项目目录,并执行dotnet ef database update以将您的上下文的任何待处理迁移应用到数据库,然后将您的应用程序部署到 azure web应用程序。

此外,EF 不支持自动迁移,您可能需要手动执行Add-Migrationdotnet ef migrations add添加迁移文件。您可以显式执行命令以应用迁移,也可以在代码中应用迁移。Configure您可以在文件方法中添加以下代码Startup.cs

using (var scope = app.ApplicationServices.GetService<IServiceScopeFactory>().CreateScope())
{
    scope.ServiceProvider.GetRequiredService<ApplicationDbContext>().Database.Migrate();
}

此外,您也可以关注这个类似的问题


推荐阅读