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

使用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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.23 17:24:01