MySql.EntityFramework 找不到合适的构造函数

Posted

技术标签:

【中文标题】MySql.EntityFramework 找不到合适的构造函数【英文标题】:MySql.EntityFramework a suitable constructor could not be located 【发布时间】:2022-01-11 14:51:14 【问题描述】:

这是我第一次尝试使用 EntityFramework 对 DB 进行操作。

我的数据库是在 mysql 中设置的,所以我已经为它安装了所有需要的 NuGets 包,我试图设置 MySql.EntityFrameworkCore,但是当我尝试运行该程序时,我收到以下错误:

System.AggregateException: '有些服务不能 构造(验证服务描述符时出错 '服务类型:VisualPos.Data.MyDbContext 寿命:范围 ImplementationType:VisualPos.Data.MyDbContext':一个合适的 'VisualPos.Data.MyDbContext' 类型的构造函数不能是 位于。确保类型是具体的并且已注册服务 公共构造函数的所有参数。)'

我的代码如下所示:

程序.cs

using Microsoft.EntityFrameworkCore;
using VisualPos.Data;

var builder = WebApplication.CreateBuilder(args);

// Add services to the container.
builder.Services.AddControllers();
builder.Services.AddDbContext<MyDbContext>(options => options.UseMySQL(builder.Configuration.GetConnectionString("Default")));
// Learn more about configuring Swagger/OpenAPI at https://aka.ms/aspnetcore/swashbuckle
builder.Services.AddEndpointsApiExplorer();
builder.Services.AddSwaggerGen();

var app = builder.Build(); // CODE CRASH HERE

// Configure the HTTP request pipeline.
if (app.Environment.IsDevelopment())

    app.UseSwagger();
    app.UseSwaggerUI();


app.UseHttpsRedirection();

app.UseAuthorization();

app.MapControllers();

app.Run();

MyDbContext.cs

使用 Microsoft.EntityFrameworkCore; 使用 VisualPos.Models;

namespace VisualPos.Data

    public class MyDbContext : DbContext
    
        protected MyDbContext(DbContextOptions<MyDbContext> options) : base(options)
        
        
        
        public DbSet<Cfg> Cfg  get; set; 

        protected override void OnModelCreating(ModelBuilder modelBuilder)
        
            base.OnModelCreating(modelBuilder);

        
    

然后在我的控制器中,我将执行 _context.Cfg.ToList(); ,其中 _contextMyDbContext 上下文。

cfg 表还存在于 DB 中。

【问题讨论】:

您使用哪些 NuGet 包(用于 MySQL 和 EF Core)和版本? @BradleyGrainger MySql.Data 8.0.27、MySql.EntityFrameworkCore 6.0.0-preview3.1 和 Microsoft.EntityFrameworkCore 6.0.0 【参考方案1】:

解决方法在错误信息中:

“VisualPos.Data.MyDbContext”类型的合适构造函数不能 位于。确保类型是具体的并且服务已注册 公共构造函数的所有参数。

你的构造函数是protected。应该是:

public MyDbContext(DbContextOptions<MyDbContext> options) : base(options)

【讨论】:

以上是关于MySql.EntityFramework 找不到合适的构造函数的主要内容,如果未能解决你的问题,请参考以下文章

找不到localhostweb页面

java为啥每次都是找不到文件。找不到文件?

java 枚举 找不到符号

bat系统找不到指定文件怎么办?

java package找不到符号

SpringBoot报找不到 dao 问题