多项目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命令:
此方式让EF Core直接到类库项目中查找DbContext,无需在启动项目中定义新的DbContext。Add-Migration InitialCreate -Project API_Test_Library -StartupProject API_Test_Console
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
相关产品推荐
相关产品推荐

