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

dotnet aspnet-codegenerator报错:发现多个同名DbContext,但项目仅一个

解决dotnet aspnet-codegenerator提示多个同名DbContext的问题

看起来你遇到的是代码生成器误判DbContext数量的问题——明明项目里只有一个TriviaDbContext,却被识别成多个,下面是几个针对性的解决办法:

1. 运行命令时明确指定DbContext

代码生成器有时候会因为程序集扫描的歧义,找不到唯一的上下文。这时候手动指定上下文的完整命名空间就能解决,比如你生成控制器的命令可以改成:

dotnet aspnet-codegenerator controller -name HostController -m Host -dc Trivia.Models.TriviaDbContext

这里的-dc(或--dataContext)参数用来指定要使用的DbContext,加上完整命名空间可以彻底避免识别歧义。

2. 清理编译残留文件

项目的bin和obj目录里可能残留旧的编译文件,这些文件里可能包含你之前修改上下文时留下的旧定义,导致代码生成器误判。先执行以下命令清理并重新编译:

dotnet clean
dotnet build

之后再重新运行代码生成命令试试。

3. 检查DbContext的注册是否重复

确认你在ConfigureServices里的DbContext注册代码没有重复。比如有没有不小心写了两次AddDbContext<TriviaDbContext>?正确的注册应该是类似这样的:

services.AddDbContext<TriviaDbContext>(options =>
    options.UseSqlServer(Configuration.GetConnectionString("DefaultConnection")));

重复注册会让代码生成器认为存在多个上下文实例。

小优化建议(非问题原因,但更规范)

你的DbSet<Host>命名为Host,按照EF Core的惯例,建议改成复数形式Hosts,这样生成的数据库表名会更符合行业规范:

public DbSet<Host> Hosts { get; set; }

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.21 08:19:28