我有一个 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 }
);
}
您需要指定要运行迁移的
--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 迁移。