.net - 如何在 Azure 部署的应用程序中应用数据库代码优先迁移?
问题描述
我刚刚将一个应用程序部署到一个 azure App Service 中。我的项目确实有要应用的迁移。但我无法通过使用 azure app 命令行来应用它们
dotnet ef 数据库更新
D:\home\site\wwwroot> 找不到匹配命令“dotnet-ef”的可执行文件
如何远程应用它们?
解决方案
对于dotnet-ef
,我假设您在谈论 Entity Framework Core。我尝试dotnet ef database update
在D:\home\site\wwwroot
KUDU 和 VS 的 Package Manager Console 下运行,我可能会遇到与您提到的相同的问题。
我发现了一个类似的问题没有找到匹配命令“dotnet-ef”的可执行文件:
DotNet CLI 只能在项目目录中解析“dotnet-ef”。
我可以通过 Powershell运行命令dotnet ef migrations add
。dotnet 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-Migration
或dotnet ef migrations add
添加迁移文件。您可以显式执行命令以应用迁移,也可以在代码中应用迁移。Configure
您可以在文件方法中添加以下代码Startup.cs
:
using (var scope = app.ApplicationServices.GetService<IServiceScopeFactory>().CreateScope())
{
scope.ServiceProvider.GetRequiredService<ApplicationDbContext>().Database.Migrate();
}
此外,您也可以关注这个类似的问题。
推荐阅读
- php - 处理 symfony-scripts 事件的脚本 Sensio\Bundle\DistributionBundle\Composer\ScriptHandler::clearCache 因异常而终止
- php - Symfony 4 中多个控制器中的分组路由
- java - Java 检查对象的方法是否并行
- php - PHP:具有远程路径的 RecursiveDirectoryIterator
- docker - KubeDNS 错误,服务器行为异常
- twitter-bootstrap - 处理`
- delphi - 如何为 IdTCPServer 分配 IP 地址?
- c++ - C++ MEX 和 C MEX 的区别
- html - 为 imacro 编写宏脚本
- java - 在 .classpath 文件 eclipse 中设置 jar 文件的相对路径