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

.NET 8+EF Core 8调用GetListAsync时出现MissingMethodException异常

升级至.NET 8和EF Core 8后出现Method not found异常:RelationalTypeMapping.Clone

问题场景

将项目升级到.NET 8和EF Core 8正式版后,执行数据库迁移或调用_bookRepository.GetListAsync()时,抛出如下异常:

Method not found: 'Microsoft.EntityFrameworkCore.Storage.RelationalTypeMapping Microsoft.EntityFrameworkCore.Storage.RelationalTypeMapping.Clone(Microsoft.EntityFrameworkCore.Storage.RelationalTypeMappingInfo ByRef)'

异常栈指向Pomelo.EntityFrameworkCore.MySql.Storage.Internal.MySqlTypeMappingSource.FindMapping方法,此前使用EF Core 7时程序运行正常。

原因分析

你项目中使用的Pomelo.EntityFrameworkCore.MySql版本为8.0.0-beta.1,该beta版本是针对EF Core 8的预览版构建的。当EF Core 8正式发布时,内部API的方法签名发生了变更(比如RelationalTypeMapping.Clone的参数形式),导致Pomelo的beta版本无法找到正式版EF Core中已修改的方法,从而引发MissingMethodException。

解决方案

1. 升级Pomelo包到兼容EF Core 8正式版的版本

修改项目的.csproj文件,将Pomelo的包版本更新为正式版8.0.0(若已发布),或兼容EF Core 8正式版的最新稳定版本:

<PackageReference Include="Pomelo.EntityFrameworkCore.MySql" Version="8.0.0" />

注:如果8.0.0正式版尚未发布,可确认Pomelo官方发布的适配EF Core 8正式版的版本号后替换。

2. 清理NuGet缓存并重新还原包

避免旧版本包残留导致的冲突:

# 清理所有NuGet本地缓存
dotnet nuget locals all --clear

# 重新还原项目依赖
dotnet restore

3. 验证修复

  • 执行数据库迁移命令测试:dotnet ef migrations list
  • 调用_bookRepository.GetListAsync()方法,确认异常不再抛出

额外检查

确保所有EF Core相关的Microsoft包版本统一为8.0.0,你的项目当前配置已满足此要求,无需额外修改。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.06 00:01:01