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

Add-Migration报错No DbContext was found in assembly,重装EF后重启项目问题复现

Add-Migration 报错"No DbContext was found in assembly" 解决方案
  • 指定命令运行参数
    运行命令时明确标注DbContext所属项目、启动项目和目标DbContext,避免命令默认扫描错程序集:
Add-Migration [你的迁移名称] -Context [你的DbContext类全名] -Project [DbContext所在的项目名称] -StartupProject [你的Web启动项目名称]

如果使用dotnet CLI,对应命令为:

dotnet ef migrations add [你的迁移名称] --context [你的DbContext类全名] --project [DbContext所在的项目路径/名称] --startup-project [你的Web启动项目路径/名称]
  • 检查DbContext注册和定义
  1. 确认启动项目的Program.cs(或Startup.cs)中已正确注册DbContext服务,示例:
builder.Services.AddDbContext<MyDbContext>(options => 
    options.UseSqlServer(builder.Configuration.GetConnectionString("DefaultConnection")));
  1. 确认DbContext类为公共类,且存在公共的DbContextOptions<MyDbContext>参数构造函数,没有修改为私有构造。
  • 核对EF版本一致性
    该报错在更新EF后临时恢复、重启后复现,大概率是EF工具版本和项目依赖的EF包版本不匹配导致:
  1. 运行dotnet ef --version查看全局EF工具版本
  2. 核对解决方案中所有项目引用的Microsoft.EntityFrameworkCore相关包版本,保证和工具大版本完全一致,例如工具版本为7.0.14,则所有EF包版本也需为7.0.x版本,不允许跨大版本混用。
  • 清理项目缓存
    删除解决方案下所有项目的bin、obj文件夹,右键解决方案选择「清理」后再执行「重建解决方案」,消除编译缓存导致的程序集扫描异常。

  • 新增设计时DbContext工厂
    如果以上方案都不生效,可以在DbContext所在项目中新增设计时工厂类,EF迁移工具会优先读取该类的配置创建DbContext,避免扫描失败:

using Microsoft.EntityFrameworkCore;
using Microsoft.EntityFrameworkCore.Design;

namespace YourNamespace
{
    public class DesignTimeMyDbContextFactory : IDesignTimeDbContextFactory<MyDbContext>
    {
        public MyDbContext CreateDbContext(string[] args)
        {
            var optionsBuilder = new DbContextOptionsBuilder<MyDbContext>();
            // 替换为你的开发环境数据库连接字符串
            optionsBuilder.UseSqlServer("Server=(localdb)\\mssqllocaldb;Database=MyDb;Trusted_Connection=True;");
            return new MyDbContext(optionsBuilder.Options);
        }
    }
}

报错截图参考:
Add-Migration报错截图

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.03 23:45:00