如何在 Azure 部署的应用程序中应用数据库代码优先迁移?
How to apply database code first migrations in an azure deployed application?
我刚刚将应用程序部署到 Azure 应用服务中。
我的项目确实有要应用的迁移。
但是我无法通过使用 azure app 命令行来应用它们
dotnet ef database update
D:\home\site\wwwroot> No executable found matching command "dotnet-ef"
如何远程应用它们?
在 Azure 上 运行 迁移的最佳方法之一是 运行ning update-database
Visual Studio 命令。但是这个命令不会运行。您的客户端 IP 地址应该可以访问 Azure。
您可以关注RUN MIGRATIONS ON THE AZURE。 Asp.Net 零建立在 Asp.Net 核心之上,因此这些步骤对您有用。
对于 dotnet-ef
,我假设您在谈论 Entity Framework 核心。我试过在KUDU的D:\home\site\wwwroot
下运行 dotnet ef database update
和VS的Package Manager Console下,我可能会遇到和你提到的同样的问题。
我发现了一个类似的问题No executable found matching command "dotnet-ef":
DotNet CLI can only resolve "dotnet-ef" when it is within the project directory.
我可以通过 Powershell 运行 命令 dotnet ef migrations add
、dotnet ef database update
。详细的命令用法可以关注EF Core .NET Command-line Tools.
How to apply database code first migrations in an azure deployed application?
据我了解,您不能那样做。您可能需要手动 运行 update-database
作为 vivek nuna 在 VS 的包管理器控制台下回答,或者您可以使用 Powershell 和 cd 到您的项目目录,并执行 dotnet ef database update
以应用任何挂起的迁移为您的数据库上下文,然后将您的应用程序部署到 azure web 应用程序。
此外,EF不支持自动迁移,您可能需要手动执行Add-Migration
或dotnet ef migrations add
来添加迁移文件。您可以显式执行命令来应用迁移,也可以在代码中应用迁移。您可以在 Startup.cs
文件的 Configure
方法中添加以下代码:
using (var scope = app.ApplicationServices.GetService<IServiceScopeFactory>().CreateScope())
{
scope.ServiceProvider.GetRequiredService<ApplicationDbContext>().Database.Migrate();
}
另外,你也可以关注这个类似的。
我有一个非常相似的问题。我正在开发一个 .NET Core 3.0 网络应用程序(Visual Studio Angular 带有个人用户帐户的模板)。我正在使用 AzureDevops 构建项目并将其发布到 Azure 上的应用服务。
首先,你可以使用
dotnet tool install --global dotnet-ef --version {version compatible with your project}
在您的管道中,在构建过程中为 dotnet 安装 ef 扩展。
我假设您要更新 remote/production 数据库。要以安全的方式执行此操作,您可以将具有特定凭据和连接字符串的 appsettings.json 文件上传到 Azure Azure DevOps 管道中的 安全文件 。见下图。
appsettings.json in Secure files
然后您可以通过 Download Secure File task 在您的构建管道中引用该文件(将该文件下载到构建的工作目录中)并使用 dotnet ef 数据库更新 像这样:
migration script
注意上面的迁移脚本中:
- app 是我的项目名称,
- 我将我的文件重命名为 appsettings.json,因为我已经使用不同的名称将其上传到 Secure files,
- 您不需要使用 ls 和 cat 命令 - 它们用于调试目的
- 命令 dotnet ef 数据库更新 使用您上传到 Secure Files 的产品 appsettings.json。
您可以在 appsettings.json 而不是本地设置 Azure 连接字符串并执行迁移或 dotnet ef database update
我刚刚将应用程序部署到 Azure 应用服务中。 我的项目确实有要应用的迁移。 但是我无法通过使用 azure app 命令行来应用它们
dotnet ef database update
D:\home\site\wwwroot> No executable found matching command "dotnet-ef"
如何远程应用它们?
在 Azure 上 运行 迁移的最佳方法之一是 运行ning update-database
Visual Studio 命令。但是这个命令不会运行。您的客户端 IP 地址应该可以访问 Azure。
您可以关注RUN MIGRATIONS ON THE AZURE。 Asp.Net 零建立在 Asp.Net 核心之上,因此这些步骤对您有用。
对于 dotnet-ef
,我假设您在谈论 Entity Framework 核心。我试过在KUDU的D:\home\site\wwwroot
下运行 dotnet ef database update
和VS的Package Manager Console下,我可能会遇到和你提到的同样的问题。
我发现了一个类似的问题No executable found matching command "dotnet-ef":
DotNet CLI can only resolve "dotnet-ef" when it is within the project directory.
我可以通过 Powershell 运行 命令 dotnet ef migrations add
、dotnet ef database update
。详细的命令用法可以关注EF Core .NET Command-line Tools.
How to apply database code first migrations in an azure deployed application?
据我了解,您不能那样做。您可能需要手动 运行 update-database
作为 vivek nuna 在 VS 的包管理器控制台下回答,或者您可以使用 Powershell 和 cd 到您的项目目录,并执行 dotnet ef database update
以应用任何挂起的迁移为您的数据库上下文,然后将您的应用程序部署到 azure web 应用程序。
此外,EF不支持自动迁移,您可能需要手动执行Add-Migration
或dotnet ef migrations add
来添加迁移文件。您可以显式执行命令来应用迁移,也可以在代码中应用迁移。您可以在 Startup.cs
文件的 Configure
方法中添加以下代码:
using (var scope = app.ApplicationServices.GetService<IServiceScopeFactory>().CreateScope())
{
scope.ServiceProvider.GetRequiredService<ApplicationDbContext>().Database.Migrate();
}
另外,你也可以关注这个类似的
我有一个非常相似的问题。我正在开发一个 .NET Core 3.0 网络应用程序(Visual Studio Angular 带有个人用户帐户的模板)。我正在使用 AzureDevops 构建项目并将其发布到 Azure 上的应用服务。
首先,你可以使用
dotnet tool install --global dotnet-ef --version {version compatible with your project}
在您的管道中,在构建过程中为 dotnet 安装 ef 扩展。
我假设您要更新 remote/production 数据库。要以安全的方式执行此操作,您可以将具有特定凭据和连接字符串的 appsettings.json 文件上传到 Azure Azure DevOps 管道中的 安全文件 。见下图。
appsettings.json in Secure files
然后您可以通过 Download Secure File task 在您的构建管道中引用该文件(将该文件下载到构建的工作目录中)并使用 dotnet ef 数据库更新 像这样:
migration script
注意上面的迁移脚本中:
- app 是我的项目名称,
- 我将我的文件重命名为 appsettings.json,因为我已经使用不同的名称将其上传到 Secure files,
- 您不需要使用 ls 和 cat 命令 - 它们用于调试目的
- 命令 dotnet ef 数据库更新 使用您上传到 Secure Files 的产品 appsettings.json。
您可以在 appsettings.json 而不是本地设置 Azure 连接字符串并执行迁移或 dotnet ef database update