You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

.NET Core多项目EF迁移报错:未找到DbContext求助

解决EF Core迁移找不到DbContext的问题

核心问题分析

你遇到的错误根源在于:

  • dotnet ef 默认扫描当前命令执行目录的程序集(此处为project.api),但你的DatabaseContext实际位于project.data项目中,自然无法被找到。
  • 你使用--context参数时传入的是文件路径,而EF要求的是完整的命名空间限定类名,并非物理文件路径。

具体解决步骤

1. 使用正确的命令格式

在project.api目录下执行命令时,需明确指定DbContext所在项目及完整类名:

dotnet ef migrations add InitialCreate -o Migrations/ --project ../project.data --context project.data.Context.DatabaseContext

参数说明:

  • --project ../project.data:告知EF扫描project.data项目的程序集以查找DbContext
  • --context project.data.Context.DatabaseContext:替换为你实际的DbContext完整命名空间+类名(比如若命名空间是Project.Data.Context则对应修改)
  • -o Migrations/:迁移文件会生成在project.data/Migrations目录,也可写为-o ../project.data/Migrations确保路径准确

2. 确保DbContext配置合规

  • 确认DatabaseContext既不是抽象类,也不是泛型类
  • 检查project.api项目已正确引用project.data项目
  • 保证DatabaseContext的构造函数正确继承DbContext:
public class DatabaseContext : DbContext
{
    public DatabaseContext(DbContextOptions<DatabaseContext> options) : base(options)
    {
    }

    // 此处定义你的DbSet集合
}

3. 备选执行方式

若不想指定--project参数,可切换到project.data目录下执行命令,同时指定启动项目(迁移依赖启动项目的配置):

dotnet ef migrations add InitialCreate -o Migrations/ --startup-project ../project.api --context project.data.Context.DatabaseContext

4. 验证项目引用

打开project.api的.csproj文件,确认已添加对project.data的引用:

<ItemGroup>
  <ProjectReference Include="..\project.data\project.data.csproj" />
</ItemGroup>

内容的提问来源于stack exchange,提问作者Ali Mardini

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.23 19:44:53