EF Core重写OnConfiguring出现No Suitable Method Found To Override报错
EF Core重写OnConfiguring提示找不到可重写方法的解决方案


开发时重写OnConfiguring方法,Visual Studio提示No Suitable Method Found To Override,无法识别该可重写方法,当前环境已安装NuGet包如下:
问题相关代码
using Microsoft.EntityFrameworkCore; using ShopApp.Entities; namespace ShopApp.DataAccess.Concrete.EfCore { public class ShopContext:DbContext { protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder) { base.OnConfiguring(optionsBuilder); } public DbSet<Product> Products { get; set; } public DbSet<Category> Categories { get; set; } } }
报错原因
核心原因是DbContext类型的引用和预期不符,常见触发场景:
- 项目同时引用了EF6(非Core版本,包名是
EntityFramework,无Core后缀)和EF Core,编译器将DbContext解析为EF6下的类型,而EF6中OnConfiguring的方法签名和EF Core不一致,无法匹配重写 - 安装的
Microsoft.EntityFrameworkCore版本过低,当前使用的版本中DbContext未开放OnConfiguring的重写入口 - NuGet包还原不完整、项目编译缓存损坏,导致IDE对类成员的识别异常
修复步骤
- 清理冲突引用
打开NuGet包管理面板,卸载所有不带Core后缀的EntityFramework包(即EF6版本),仅保留Microsoft.EntityFrameworkCore开头的相关包。同时检查所有EF Core相关包(包括数据库提供器、工具包)的版本号完全一致,禁止出现主版本号跨代的情况,比如核心包是7.x版本,SqlServer提供器不能装3.x版本。 - 校验类型解析来源
鼠标悬停在代码中的DbContext类名上,查看提示的命名空间:如果显示为System.Data.Entity,说明还是解析到了EF6的类型,手动删除项目引用中残留的EF6相关dll即可;如果显示为Microsoft.EntityFrameworkCore,再进行下一步。 - 清理项目缓存
关闭Visual Studio,直接删除项目根目录下的bin、obj文件夹,重新打开VS后执行NuGet包还原,重新生成项目即可正常重写方法。
内容的提问来源于stack exchange,提问作者TheAsh
相关产品推荐
相关产品推荐

