EF Database First访问DbSet报Sequence contains more than one matching element错误
问题根源排查
你的错误是EF6和EF Core包引用冲突导致的,直接删除项目中对EntityFramework(版本6.4.4)的包引用即可解决问题。
具体分析
- 你同时引用了两个完全独立的EF框架,核心逻辑存在冲突:
- 旧版
EntityFramework 6.4.4:仅适配.NET Framework生态,你项目配置的imports导入net4x版本就是为了兼容这个包,但它和EF Core的核心类、扩展方法存在大量命名空间、方法签名重复 - 新版
Microsoft.EntityFrameworkCore.*系列包:是.NET Core/.NET 5+专用的EF版本
- 旧版
- 两个框架的
QueryableMethods静态类存在同名方法,EF Core初始化时反射获取方法就会触发Sequence contains more than one matching element的异常,完全匹配你给出的报错栈。
修复步骤
- 编辑你的
Server.csproj文件,删除EntityFramework6.4.4对应的包引用行 - 清理项目缓存:执行
dotnet clean,再手动删除项目根目录下的obj、bin文件夹 - 重新还原包:执行
dotnet restore - 运行项目验证,访问DbSet的报错会直接消失
额外建议
你当前使用的是.NET 6 SDK,EF Core 5版本和.NET 6虽然兼容,但更推荐你把所有Microsoft.EntityFrameworkCore.*系列包统一升级到6.x版本,和SDK版本对齐,避免其他潜在的兼容问题。
内容的提问来源于stack exchange,提问作者Savonarolla
相关产品推荐
相关产品推荐

