.NET 6添加迁移失败求助:N层架构下工具指向API项目报错
.NET 6 N层架构下EF Core迁移报错解决方案
报错信息
Your startup project 'API' doesn't reference Microsoft.EntityFrameworkCore.Design. This package is required for the Entity Framework Core Tools to work. Ensure your startup project is correct, install the package, and try again.
解决方法
方法1:给API项目直接安装EF Core Design包
EF Core迁移工具执行时会依赖启动项目的环境加载设计时组件,即便上下文放在类库中,启动项目(API)也需要直接引用Microsoft.EntityFrameworkCore.Design包:
- 包管理器控制台执行命令:
Install-Package Microsoft.EntityFrameworkCore.Design -ProjectName API - 也可以通过NuGet包管理器界面,在API项目的依赖列表中添加该包。
方法2:指定设计时程序集(无需给API装包)
如果不想在API项目中引入Design包,可在迁移命令里明确指定包含上下文和Design包的类库程序集:
Add-Migration InitialCreate -ProjectName YourContextLibraryName -StartupProject API -DesignTimeDbContextFactoryAssembly YourContextLibraryName
将YourContextLibraryName替换为你的上下文类库实际名称即可。
方法3:检查包管理器控制台的项目配置
- 确认控制台顶部的「默认项目」选择的是你的上下文类库
- 确保解决方案的启动项目是API(N层架构下通常以此作为启动项目)
原因说明
EF Core迁移工具需要在设计时模拟应用启动流程来获取DbContext的配置信息。即便上下文所在类库已安装Design包,工具默认会优先从启动项目(API)中查找所需组件,因此要么给API直接装包,要么明确告知工具设计时程序集的位置。
内容的提问来源于stack exchange,提问作者Ayham
相关产品推荐
相关产品推荐

