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

.NET Core 3.1添加EF迁移时Pomelo.MySql组件报错求助

解决Pomelo EF Core与EF Core版本不兼容导致的Create方法未实现错误

这个TypeLoadException问题的根源很明确——你项目里的EF Core版本和Pomelo.EntityFrameworkCore.MySql版本完全不匹配。

看一下你的依赖配置:你用了EF Core 5.0的预览版(5.0.0-rc.2.20475.6),但Pomelo的版本是3.2.3,这个版本只适配EF Core 3.x系列。两者的内部API接口已经发生了变化,所以才会出现MySqlSqlTranslatingExpressionVisitorFactory的Create方法找不到实现的错误。另外你还引用了早就过时的Pomelo.EntityFrameworkCore.MySql.Design包,这个包在Pomelo 3.x之后已经被整合到主包,不需要单独引用了。

下面是具体的解决步骤:

1. 统一EF Core和Pomelo的版本

你有两个可选方案,推荐选方案A,因为你的项目目标框架是netcoreapp3.1,搭配稳定版的EF Core 3.1.x更可靠:

方案A:降级EF Core到3.1.x稳定版(和Pomelo 3.2.3匹配)

修改你的项目.csproj文件,调整依赖如下:

<Project Sdk="Microsoft.NET.Sdk.Web">
  <PropertyGroup>
    <TargetFramework>netcoreapp3.1</TargetFramework>
  </PropertyGroup>
  <ItemGroup>
    <PackageReference Include="Microsoft.EntityFrameworkCore" Version="3.1.30" />
    <PackageReference Include="Microsoft.EntityFrameworkCore.Design" Version="3.1.30">
      <IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
      <PrivateAssets>all</PrivateAssets>
    </PackageReference>
    <PackageReference Include="Pomelo.EntityFrameworkCore.MySql" Version="3.2.3" />
    <!-- 移除这个过时的Design包 -->
    <!-- <PackageReference Include="Pomelo.EntityFrameworkCore.MySql.Design" Version="1.1.2" /> -->
  </ItemGroup>
</Project>

方案B:升级Pomelo到兼容EF Core 5.x的版本

如果你坚持要用EF Core 5.x,确保Pomelo版本也升级到5.x系列(比如5.0.3),修改后的依赖如下:

<Project Sdk="Microsoft.NET.Sdk.Web">
  <PropertyGroup>
    <TargetFramework>netcoreapp3.1</TargetFramework>
  </PropertyGroup>
  <ItemGroup>
    <PackageReference Include="Microsoft.EntityFrameworkCore" Version="5.0.17" />
    <PackageReference Include="Microsoft.EntityFrameworkCore.Design" Version="5.0.17">
      <IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
      <PrivateAssets>all</PrivateAssets>
    </PackageReference>
    <PackageReference Include="Pomelo.EntityFrameworkCore.MySql" Version="5.0.3" />
  </ItemGroup>
</Project>

2. 清理并重建项目

在命令行执行以下命令,清理旧的编译文件并重新还原依赖:

dotnet clean
dotnet restore

3. 重新执行迁移命令

现在再运行你的迁移命令,应该就能正常执行了:

dotnet ef migrations add InitialMigration

额外提醒

  • 记住Pomelo和EF Core的版本必须严格对应:EF Core 3.x ↔ Pomelo 3.x,EF Core 5.x ↔ Pomelo 5.x,大版本号一定要一致。
  • 不要在Pomelo 3.x及以上版本中单独引用Pomelo.EntityFrameworkCore.MySql.Design,否则会引发不必要的版本冲突。

内容的提问来源于stack exchange,提问作者ishan avishka

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.09 16:17:57