使用MySql.EntityFrameworkCore时找不到MyDbContext合适构造函数如何解决
报错核心原因
依赖注入容器在尝试构造MyDbContext实例时,无法找到符合要求的公共构造函数:你当前代码中MyDbContext的构造函数修饰符为protected,仅允许子类访问,DI系统没有权限调用该构造函数完成实例化。
解决方案
直接修改MyDbContext.cs中的构造函数访问修饰符,将protected改为public即可:
namespace VisualPos.Data { public class MyDbContext : DbContext { // 将protected改为public public MyDbContext(DbContextOptions<MyDbContext> options) : base(options) { } public DbSet<Cfg> Cfg { get; set; } protected override void OnModelCreating(ModelBuilder modelBuilder) { base.OnModelCreating(modelBuilder); } } }
额外校验项
修改完成后如果还有异常,可以依次检查以下配置:
- 确认
appsettings.json中已存在名为Default的MySQL连接字符串,格式示例:"ConnectionStrings": { "Default": "server=127.0.0.1;database=你的数据库名;uid=root;pwd=你的数据库密码;port=3306;CharSet=utf8mb4;" } - 确认已安装的
MySql.EntityFrameworkCore包版本和你项目使用的.NET SDK版本兼容 - 确认
Cfg实体类的字段和数据库中cfg表的字段可以正常映射,没有类型不匹配问题
修改完成后即可正常在控制器中注入MyDbContext实例,执行数据读取操作。
内容的提问来源于stack exchange,提问作者NiceToMytyuk
相关产品推荐
相关产品推荐

