我刚刚将应用程序部署到azure App Service中。 我的项目确实有要应用的迁移。 但是我无法通过使用azure app命令行来应用它们
dotnet ef数据库更新
d:\家\站点\ wwwroot的>找不到匹配命令“dotnet-ef”
的可执行文件
如何远程应用它们?
答案 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 add
,dotnet 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-Migration
或dotnet 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 脚本:
请注意,在上面的迁移脚本中:
答案 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