Get-DbContext返回不可用上下文,EF迁移多DbContext报错求助
解决EF Core迁移识别多个DbContext的问题
1. 统一EF Core工具与运行时版本
你的EF Core工具版本(5.0.11)低于运行时版本(5.0.12),版本不匹配会引发上下文识别异常。执行以下命令更新工具包:
Update-Package Microsoft.EntityFrameworkCore.Tools -Version 5.0.12
2. 使用完整命名空间指定上下文
Get-DbContext输出的上下文完整路径为rollbase.Areas.Identity.Data.ApplicationDbContext,仅用短名称可能导致工具无法精准匹配。执行迁移命令时传入完整命名空间:
Add-Migration InitialCreate -Context rollbase.Areas.Identity.Data.ApplicationDbContext
3. 清理项目缓存并重新构建
项目缓存可能干扰工具的上下文扫描,按以下步骤操作:
- 删除项目根目录下的
bin和obj文件夹 - 在Package Manager Console中执行
Build命令 - 重新尝试迁移命令
4. 指定目标项目(多项目解决方案场景)
若解决方案包含多个项目,需明确指定迁移所属的项目:
Add-Migration InitialCreate -Context rollbase.Areas.Identity.Data.ApplicationDbContext -Project rollbase
5. 排查其他DbContext实现
检查项目中是否存在其他继承自DbContext或IdentityDbContext的类:
- 全局搜索项目内所有继承
DbContext的类型 - 确认Startup.cs中仅注册了
ApplicationDbContext,无其他上下文的DI注册
6. 重置本地数据库(可选)
若以上步骤均无效,可重置localdb数据库消除旧数据干扰:
- 在SQL Server Object Explorer中删除对应的localdb数据库
- 执行
Update-Database -Context rollbase.Areas.Identity.Data.ApplicationDbContext创建新数据库并应用迁移
内容的提问来源于stack exchange,提问作者Dave
相关产品推荐
相关产品推荐

