EF Core 8.0.0-rc迁移报错:无法创建StockInfraContext实例
EF Core迁移报错排查:无法解析DbContextOptions服务
核心问题:服务注册时机错误
你的应用启动代码中,先调用builder.Build()创建WebApplication实例,之后才注册Stock相关服务。而builder.Build()会锁定服务容器,后续添加的服务不会被注入到容器中,导致EF Core无法找到DbContextOptions<StockInfraContext>的配置。
错误的启动顺序:
var builder = WebApplication.CreateBuilder(args); var app = builder.Build(); // 此处已锁定服务容器 builder.Services.ExposeStockIoC(builder.Configuration); // 该行配置不会生效
正确的启动顺序(先完成所有服务注册,再构建应用):
var builder = WebApplication.CreateBuilder(args); // 先注册所有依赖服务 builder.Services.ExposeStockIoC(builder.Configuration); // 再构建WebApplication实例 var app = builder.Build(); // 后续添加中间件配置等逻辑 app.Run();
额外验证点
- 确认
appsettings.json中存在格式正确的PsqlConnection连接字符串:"ConnectionStrings": { "PsqlConnection": "Host=localhost;Database=StockDb;Username=postgres;Password=your_password" } - 执行迁移时,若
StockInfraContext在类库项目中,需指定项目参数:dotnet ef migrations add InitialCreate --project Domains.Stock.Infra.Data --startup-project 你的Web应用项目名 - 检查
MigrationsAssembly配置:确认typeof(StockInfraContext).Assembly.FullName指向的程序集包含迁移文件,若迁移文件在Web项目中,需改为Web项目的程序集名称。
内容的提问来源于stack exchange,提问作者Rodrigo Batista
相关产品推荐
相关产品推荐

