如何在azure部署的应用程序中应用数据库代码首次迁移?

时间:2018-05-09 00:16:28

标签: .net azure ef-code-first dotnet-cli

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

  

dotnet ef数据库更新

     

d:\家\站点\ wwwroot的>找不到匹配命令“dotnet-ef”

的可执行文件

如何远程应用它们?

4 个答案:

答案 0 :(得分:2)

对于dotnet-ef,我假设您正在谈论实体框架核心。我试图在dotnet ef database update的KUDU和VS的程序包管理器控制台下运行D:\home\site\wwwroot,我可能遇到与您提到的相同的问题。

我发现了类似问题No executable found matching command "dotnet-ef"

  

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

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

  

如何在azure部署的应用程序中应用数据库代码首次迁移?

根据我的理解,你不能这样做。您可能需要手动运行update-database,因为vivek nuna在VS的软件包管理器控制台下回答,或者您可以使用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();
}

此外,您还可以遵循类似的issue

答案 1 :(得分:1)

我有一个非常相似的问题。我正在开发.NET Core 3.0 Web应用程序(带有单个用户帐户的Visual Studio Angular模板)。我正在使用AzureDevops生成项目并将其发布到Azure上的应用程序服务。

首先,您可以使用

dotnet tool install --global dotnet-ef --version {version compatible with your project}

在管道中

在构建过程中为 dotnet 安装 ef 扩展。

然后要做的是,将我的appsettings.json文件(具有特定的连接字符串)上传到Azure Azure DevOps管道中的安全文件

appsettings.json in Secure files

然后,您可以通过 Download Secure File task (将文件下载到构建的工作目录中)在构建管道中引用该文件,然后运行一个小的 cmd 脚本:

  • 将其移动到您的项目目录(请参阅文档$(filesName.secureFilePath)检索文件下载到的路径)
  • 运行迁移。

migration script

请注意,在上面的迁移脚本中:

  • app 是我的项目名称,
  • 我将文件重命名为 appsettings.json ,因为我已将其上传到具有不同名称的安全文件中,
  • 您不需要使用 ls cat 命令-它们仅用于调试目的。

答案 2 :(得分:0)

在Azure上运行迁移的最佳方法之一是在Visual Studio中运行update-database命令。但是这个命令不会运行。您的客户端IP地址应该可以访问Azure。

您可以关注RUN MIGRATIONS ON THE AZURE。 Asp.Net Zero构建于Asp.Net Core之上,因此这些步骤对您有用。

答案 3 :(得分:0)

您可以在appsettings.json中设置Azure连接字符串,而不是在本地设置并执行迁移或dotnet ef database update