You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Azure部署的应用中远程应用Database Code First迁移?

解决Azure App Service中dotnet-ef命令找不到的问题

这个问题我之前帮不少开发者踩过坑,核心原因就是Azure App Service的默认运行环境里没有预装dotnet-ef全局工具,或者你的项目配置没让工具能被正确识别。下面给你几个实用的解决思路:

方案1:把dotnet-ef作为项目本地工具安装

这是最推荐的方法,能把工具和项目绑定,彻底避免环境依赖问题:

  • 本地打开项目根目录,执行:
    dotnet new tool-manifest
    dotnet tool install dotnet-ef
    
  • 这会生成一个.config目录和工具清单文件,把它们一起提交到代码仓库,重新部署到Azure
  • 登录Azure的Kudu控制台(App Service -> 开发工具 -> 高级工具 -> 进入),切换到D:\home\site\wwwroot目录,先执行:
    dotnet tool restore
    
    然后再运行迁移命令:
    dotnet ef database update
    

方案2:在项目中引用EF Core设计包

如果不想用本地工具,可以直接让项目依赖包含EF工具:

  • 打开项目的.csproj文件,添加以下包引用(注意版本要和你项目中其他EF Core包完全一致):
    <PackageReference Include="Microsoft.EntityFrameworkCore.Design" Version="x.x.x" PrivateAssets="all" />
    
  • 重新发布项目到Azure,之后在Kudu控制台直接执行dotnet ef database update就能正常运行了

方案3:提前生成迁移SQL脚本,直接在数据库执行

适合生产环境,能提前验证迁移的安全性,避免在线执行出错:

  • 本地项目根目录执行:
    dotnet ef migrations script -o migration.sql
    
  • 把生成的migration.sql文件下载下来,登录Azure Portal找到对应的数据库(比如Azure SQL Database)
  • 打开数据库的“查询编辑器”,上传或粘贴这个SQL脚本,执行即可完成迁移

方案4:通过启动命令自动执行迁移(可选)

如果想让应用启动时自动执行迁移,可以在Azure Portal配置启动命令:

  • 进入App Service的“配置” -> “常规设置”,在“启动命令”中填入:
    dotnet ef database update && dotnet YourAppName.dll
    
  • 注意:这个方案需要先通过前面的1或2方案让dotnet ef能被识别,否则应用启动会失败

额外注意事项

  • 务必保证dotnet ef工具版本和项目中EF Core包的版本完全一致,版本不匹配也会导致命令无法执行
  • Kudu控制台执行命令时,要确认当前目录是项目的根目录(也就是wwwroot下对应你的项目代码路径)

内容的提问来源于stack exchange,提问作者Daniel Santos

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.27 04:23:07