尝试迁移数据库时无法创建类型为“”的“DbContext”

问题描述 投票:0回答:1

我有一个 Asp.Net 项目,我尝试使用 DbContext 迁移数据库。 不幸的是,我收到错误

无法创建类型为“”的“DbContext”。尝试激活“Bulky.DataAccess.Data.ApplicationDbContext”时出现异常“无法解析类型“Microsoft.EntityFrameworkCore.DbContextOptions`1[Bulky.DataAccess.Data.ApplicationDbContext]”的服务。尝试创建实例时抛出。

当我尝试使用

迁移数据库时

dotnet ef 迁移添加 AddCategoryToDbAndSeedTable

命令

你能向我解释一下为什么它不起作用吗? 我用谷歌驱动器链接附加了整个项目

项目链接:https://drive.google.com/file/d/1hEIv9BeocKmFZRyELYeUZTTtyrIaZbF9/view?usp=sharing

编辑: 这是详细日志: https://drive.google.com/file/d/1jPweHJc0YsI-Kg_5W6D5cfFQd3n6X8XU/view?usp=sharing

相关代码如下:

程序.cs:

using Bulky.DataAccess.Data;
using Microsoft.EntityFrameworkCore;

var builder = WebApplication.CreateBuilder(args);

// Add services to the container.
builder.Services.AddControllersWithViews();
builder.Services.AddDbContext<ApplicationDbContext>(options =>
    options.UseSqlServer(builder.Configuration.GetConnectionString("DefaultConnection")));

var app = builder.Build();

// Configure the HTTP request pipeline.
if (!app.Environment.IsDevelopment())
{
    app.UseExceptionHandler("/Home/Error");
    // The default HSTS value is 30 days. You may want to change this for production scenarios, see https://aka.ms/aspnetcore-hsts.
    app.UseHsts();
}

app.UseHttpsRedirection();
app.UseStaticFiles();

app.UseRouting();

app.UseAuthorization();

app.MapControllerRoute(
    name: "default",
    pattern: "{controller=Home}/{action=Index}/{id?}");

app.Run();

ApplicationDbContext.cs:

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

    public DbSet<Category> Categories { get; set; }
    
    protected override void OnModelCreating(ModelBuilder modelBuilder)
    {
        modelBuilder.Entity<Category>().HasData(
            new Category { Id = 1, Name = "Action", DisplayOrder = 1 },
            new Category { Id = 2, Name = "SciFi", DisplayOrder = 2 },
            new Category { Id = 3, Name = "History", DisplayOrder = 3 }
            );
    }
asp.net asp.net-mvc entity-framework asp.net-core entity-framework-core
1个回答
0
投票

您需要指定要运行迁移的

--project
(应添加新 EF 迁移的项目)和
--startup-project
(包含数据库设置的项目)。如果没有这些设置,
Bulky.DataAccess
项目就没有数据库连接字符串,并且如果不从
ApplicationDbContext
项目进行依赖项注入设置,则无法构建
BulkyWeb3

从与 BuklyWeb3.sln 相同的文件夹中,您可以运行以下命令:

dotnet ef migrations add AddInitialMigration --startup-project BulkyWeb3 --project Bulky.DataAccess

或者,从 Bulky.DataAccess.csproj 所在的同一文件夹中,您可以运行以下命令:

dotnet ef migrations add AddInitialMigration --startup-project ..\BulkyWeb3

这些命令将在新的

/BulkyWeb3/Bulky.DataAccess/Migrations
文件夹中创建新的 EF 迁移。

© www.soinside.com 2019 - 2024. All rights reserved.