.net 无法创建“DBContext”

ss2ws0br  于 2023-03-13  发布在  .NET
关注(0)|答案(1)|浏览(153)

我有以下错误消息:
无法创建类型为“”的“DbContext”。异常“尚未为此DbContext配置数据库提供程序。可以通过重写”DbContext.OnConfiguring“方法或对应用程序服务提供程序使用”AddDbContext“来配置提供程序。”
当我尝试添加我的第一个迁移时,我得到了这个问题。我该如何解决?
这是我的上下文类:

public partial class MyContext : DbContext
{
    public MyContext(DbContextOptions<MyContext> options)
        : base(options)
    { }

    public virtual DbSet<User> Users { get; set; }
    
    protected override void OnModelCreating(ModelBuilder modelBuilder)
    {
        OnModelCreatingPartial(modelBuilder);
    }

    partial void OnModelCreatingPartial(ModelBuilder modelBuilder);
}

这是我的程序。

var builder = WebApplication.CreateBuilder(args);
builder.Services.AddControllersWithViews();
builder.Services.AddRazorPages();
builder.Services.AddDbContext<MyContext>(options =>
    options
        .UseMySql( builder.Configuration.GetConnectionString("MyContext"), new MariaDbServerVersion("10.5.18-MariaDB") )
);
builder.Services.AddTransient<IUserManager, UserManager>();

var app = builder.Build();

if (app.Environment.IsDevelopment())
{
    app.UseMigrationsEndPoint();
    app.UseWebAssemblyDebugging();
}
else
{
    app.UseExceptionHandler("/Error");
    app.UseHsts();
}
app.UseHttpsRedirection();
app.UseBlazorFrameworkFiles();
app.UseStaticFiles();
app.UseRouting();
app.MapRazorPages();
app.MapControllers();
app.MapFallbackToFile("index.html");
app.Run();

我希望有人能帮助我:)

bq3bfh9z

bq3bfh9z1#

public MyContext(DbContextOptions<MyContext> options)
        : base(options)
    { }

您的DbContext具有接受DbContextOptions的构造函数。
从您的代码中,我无法找到您加载选项参数的这段代码。
您可以尝试覆盖OnConfiguring方法,以便在MyContext类中构建选项

protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)
    {
        if (!optionsBuilder.IsConfigured)
        {
            IConfigurationRoot config = new ConfigurationBuilder()
               .SetBasePath(Directory.GetCurrentDirectory())
               .AddJsonFile("appsettings.json")
               .Build();
            string connString = config.GetConnectionString("DbCoreConnectionString");
            optionsBuilder.UseSqlServer(connString); //Or whatever DB you are using
        }
    }

相关问题