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

多项目EF Core迁移失败:单项目含DbContext的替代修复方案

EF Core迁移找不到类库中DbContext的解决方案

无需在启动项目新增DbContext的修复方式

1. 迁移命令中指定DbContext所在项目

执行EF Core迁移时,通过命令参数明确指定包含SYSTEM_CONTEXT的类库项目,同时指定启动项目以加载配置:

  • EF Core CLI命令:
    dotnet ef migrations add InitialCreate --project API_Test_Library --startup-project API_Test_Console
    
  • Package Manager Console命令:
    Add-Migration InitialCreate -Project API_Test_Library -StartupProject API_Test_Console
    
    此方式让EF Core直接到类库项目中查找DbContext,无需在启动项目中定义新的DbContext。

2. 在启动项目中注册类库的DbContext

在启动项目(API_Test_Console)的配置代码中,注册类库中的SYSTEM_CONTEXT并配置数据库连接字符串即可,无需新增DbContext:

// Program.cs 示例代码
var configuration = new ConfigurationBuilder()
    .SetBasePath(Directory.GetCurrentDirectory())
    .AddJsonFile("appsettings.json") // 确保存在该配置文件存储连接字符串
    .Build();

// 注册类库中的SYSTEM_CONTEXT
services.AddDbContext<SYSTEM_CONTEXT>(options =>
    options.UseSqlServer(configuration.GetConnectionString("DefaultConnection")));

这样EF Core执行迁移时,可通过启动项目的配置获取DbContext的运行时参数,同时DbContext的定义仍保留在类库中。

是否必须为每个项目配置DbContext?

不需要。DbContext只需在类库中定义一次,只要执行迁移时EF Core能定位到它的程序集,且能获取到对应的数据库连接配置即可。启动项目的作用是提供迁移所需的配置环境,而非必须包含DbContext的定义。

内容的提问来源于stack exchange,提问作者Jean Tosta

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.19 06:22:08