.NET Core 6+项目升级后执行EF CLI命令出现依赖解析错误求助
解决.NET 6+中运行EF Core CLI命令时的TypeMappingSourceDependencies解析错误
这个错误的核心原因是MySQL EF Core提供程序与当前项目的EF Core版本不兼容,.NET 6+对应EF Core 6及以上版本,必须搭配版本完全匹配的MySQL驱动包才能正常工作,以下是具体解决步骤:
统一EF Core与MySQL驱动包版本
- 打开项目的
.csproj文件,确认所有Microsoft.EntityFrameworkCore相关包(如Microsoft.EntityFrameworkCore.Design、Microsoft.EntityFrameworkCore.Tools)的版本与你的.NET框架版本对齐(比如.NET 6对应EF Core 6.x,.NET 7对应7.x)。 - 根据你使用的MySQL驱动类型调整:
- 若使用Oracle官方的
MySql.EntityFrameworkCore:确保其版本与EF Core版本完全一致,比如EF Core是6.0.25,就安装同版本的MySql.EntityFrameworkCore。 - 若使用Pomelo的
Pomelo.EntityFrameworkCore.MySql(兼容性更优):同样安装与EF Core版本匹配的包,比如EF Core 6.x对应Pomelo 6.x系列。
- 若使用Oracle官方的
- 打开项目的
清理并重建依赖
- 执行命令清理NuGet缓存:
dotnet nuget locals all --clear - 删除项目目录下的
obj和bin文件夹 - 重新还原项目依赖:
dotnet restore
- 执行命令清理NuGet缓存:
检查DbContext服务注册(.NET 6+顶级语句)
确保Program.cs中注册数据库上下文的代码正确,无版本冲突:// Oracle官方驱动示例 builder.Services.AddDbContext<YourDbContext>(options => options.UseMySQL(builder.Configuration.GetConnectionString("DefaultConnection"))); // Pomelo驱动示例(需指定ServerVersion) builder.Services.AddDbContext<YourDbContext>(options => options.UseMySql(builder.Configuration.GetConnectionString("DefaultConnection"), ServerVersion.AutoDetect(builder.Configuration.GetConnectionString("DefaultConnection"))));对齐全局EF Core CLI工具版本
全局安装的dotnet-ef工具版本必须与项目EF Core版本一致,执行更新命令:dotnet tool update --global dotnet-ef --version <对应版本号>例如.NET 6项目就执行:
dotnet tool update --global dotnet-ef --version 6.0.25
常见误区提醒
- 不要同时安装Oracle和Pomelo的MySQL驱动包,会引发依赖冲突。
- 修改
.csproj中的版本号后,必须执行dotnet restore让依赖生效。
内容的提问来源于stack exchange,提问作者Felipe Esteves
相关产品推荐
相关产品推荐

