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

Visual Studio for Mac下.NET Core Web API EF脚手架MySQL报错求助

解决.NET Core 2.0 + MySQL EF Core脚手架生成时的类型加载错误

这个错误的核心原因是你的MySQL EF Core Provider版本和项目依赖的EF Core版本不兼容,具体来说:

  • 你的项目基于.NET Core 2.0,通过Microsoft.AspNetCore.All 2.0.0引入的EF Core版本是2.0.0
  • 但你使用的MySql.Data.EntityFrameworkCore 8.0.9-dmr是为EF Core 2.1及以上版本设计的,两者API结构不匹配,导致找不到DesignTimeProviderServicesAttribute这个类型(该类型在EF Core 2.0的体系中不存在,是后续版本新增/调整的)

修复步骤:

  1. 替换兼容的MySQL EF Core包版本
    对于.NET Core 2.0,你需要使用专门适配的MySQL EF Core Provider版本——6.10.8。修改你的csproj文件,将MySQL相关包的版本替换成如下内容:

    <Project Sdk="Microsoft.NET.Sdk.Web">
      <PropertyGroup>
        <TargetFramework>netcoreapp2.0</TargetFramework>
      </PropertyGroup>
      <ItemGroup>
        <PackageReference Include="Microsoft.AspNetCore.All" Version="2.0.0" />
        <PackageReference Include="MySql.Data.EntityFrameworkCore" Version="6.10.8" />
        <PackageReference Include="MySql.Data.EntityFrameworkCore.Design" Version="6.10.8" />
      </ItemGroup>
      <ItemGroup>
        <DotNetCliToolReference Include="Microsoft.EntityFrameworkCore.Tools.DotNet" Version="2.0.1" />
        <DotNetCliToolReference Include="Microsoft.VisualStudio.Web.CodeGeneration.Tools" Version="2.0.0" />
      </ItemGroup>
    </Project>
    
  2. 清理并恢复NuGet依赖
    在项目根目录执行以下命令,确保旧的不兼容包被清理,新的依赖被正确下载:

    dotnet clean
    dotnet restore
    
  3. 重新执行脚手架命令
    再次运行你原来的dotnet ef dbcontext scaffold命令即可,版本匹配后Provider能正确找到对应的EF Core类型:

    dotnet ef dbcontext scaffold "server=[server];port=3306;user=[user];password=[password];database=[dbname]" MySql.Data.EntityFrameworkCore -o Models -c [contextname] -f -v
    

补充说明:

你看到网上有人用类似配置成功,是因为他们的项目大概率是基于.NET Core 2.1或更高版本——这些版本的EF Core和8.x系列的MySQL Provider是兼容的。如果你的项目没有必须停留在2.0的限制,也可以考虑将项目升级到.NET Core 2.1+,这样就能使用更新的MySQL Provider版本,获得更好的兼容性和功能。

内容的提问来源于stack exchange,提问作者Ori.Lin

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.15 08:35:49