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

.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驱动包版本

    1. 打开项目的.csproj文件,确认所有Microsoft.EntityFrameworkCore相关包(如Microsoft.EntityFrameworkCore.Design、Microsoft.EntityFrameworkCore.Tools)的版本与你的.NET框架版本对齐(比如.NET 6对应EF Core 6.x,.NET 7对应7.x)。
    2. 根据你使用的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系列。
  • 清理并重建依赖

    1. 执行命令清理NuGet缓存:dotnet nuget locals all --clear
    2. 删除项目目录下的obj和bin文件夹
    3. 重新还原项目依赖:dotnet restore
  • 检查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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.15 07:45:37