使用EF Core 7.0.14执行Scaffold-DbContext时包还原失败求助
解决EF Core 7 Scaffold-DbContext包还原失败回滚问题
针对你在.NET Core 7项目中使用EF Core 7.0.14执行Scaffold-DbContext命令时遇到的"包还原失败,正在回滚包更改"错误,可尝试以下解决方案:
清理并重新还原NuGet包
- 右键项目 → 管理NuGet程序包 → 点击顶部的"还原"按钮
- 或在Package Manager Console执行命令:
Update-Package -reinstall - 手动删除项目根目录下的
obj和bin文件夹,然后重新生成项目
确保EF Core工具版本与项目版本匹配
- 执行
dotnet tool list --global查看全局安装的dotnet-ef版本 - 若版本不是7.0.14,先卸载旧版本:
dotnet tool uninstall --global dotnet-ef - 安装对应版本:
dotnet tool install --global dotnet-ef --version 7.0.14
- 执行
校验连接字符串与Scaffold命令格式
确保连接字符串正确,且命令参数无误,示例命令:Scaffold-DbContext "Server=.;Database=你的数据库名;Trusted_Connection=True;" Microsoft.EntityFrameworkCore.SqlServer -OutputDir Models -Context ApplicationDbContext -Force若要保留现有
ApplicationDbContext的自定义代码,可移除-Force参数,或先备份文件。检查项目依赖版本一致性
打开项目的.csproj文件,确认所有EF Core相关包版本统一为7.0.14,示例配置:<PackageReference Include="Microsoft.EntityFrameworkCore" Version="7.0.14" /> <PackageReference Include="Microsoft.EntityFrameworkCore.SqlServer" Version="7.0.14" /> <PackageReference Include="Microsoft.EntityFrameworkCore.Tools" Version="7.0.14"> <PrivateAssets>all</PrivateAssets> <IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets> </PackageReference>清除NuGet缓存
- 打开Visual Studio → 工具 → 选项 → NuGet包管理器 → 常规 → 点击"清除所有NuGet缓存"
- 或手动删除本地NuGet缓存目录:
C:\Users\<你的用户名>\.nuget\packages
适配现有ApplicationDbContext的Identity继承关系
你的ApplicationDbContext继承自IdentityDbContext,若数据库中未存在Identity相关表(如AspNetUsers、AspNetRoles),Scaffold命令可能报错:- 先执行
Add-Migration InitialCreate和Update-Database生成Identity表,再执行Scaffold - 或通过
-Tables参数指定仅生成业务表,排除Identity表:Scaffold-DbContext "你的连接字符串" Microsoft.EntityFrameworkCore.SqlServer -OutputDir Models -Context ApplicationDbContext -Tables Categories,Products,ProductPrices,OrderDetails,OrderHeaders -Force
- 先执行
内容的提问来源于stack exchange,提问作者ucy
相关产品推荐
相关产品推荐

