使用Scaffold生成控制器后,激活ClubController时无法解析SchuttersContext服务
解决 "Unable to resolve service for type 'Schutters.Models.SchuttersContext'" 错误
嘿,这个问题我之前也碰到过!本质就是ASP.NET Core的依赖注入(DI)容器找不到你要的SchuttersContext服务——你用Scaffold生成的ClubController构造函数明确要求注入这个上下文,但你的Startup类里只注册了ApplicationDbContext,两者匹配不上,自然就报错了。
下面是具体的解决步骤:
1. 在Startup中注册SchuttersContext
打开你的Startup.cs,找到ConfigureServices方法,添加一行注册SchuttersContext的代码。如果SchuttersContext和ApplicationDbContext使用同一个数据库连接字符串,直接复用SchuttersConnection就好:
services.AddDbContext<SchuttersContext>(options => options.UseSqlServer(Configuration.GetConnectionString("SchuttersConnection")));
修改后的完整ConfigureServices方法应该是这样:
public void ConfigureServices(IServiceCollection services) { // 保留原有的ApplicationDbContext注册 services.AddDbContext<ApplicationDbContext>(options => options.UseSqlServer( Configuration.GetConnectionString("SchuttersConnection"))); // 新增:注册SchuttersContext到DI容器 services.AddDbContext<SchuttersContext>(options => options.UseSqlServer(Configuration.GetConnectionString("SchuttersConnection"))); services.AddDefaultIdentity<IdentityUser>(options => options.SignIn.RequireConfirmedAccount = true) .AddEntityFrameworkStores<ApplicationDbContext>(); services.AddControllersWithViews(); services.AddRazorPages(); }
2. 确认SchuttersContext的定义没问题
顺便检查下你的SchuttersContext类是否正确继承了DbContext,并且配置了对应的实体集合,比如:
using Microsoft.EntityFrameworkCore; using Schutters.Models; namespace Schutters.Models { public class SchuttersContext : DbContext { public SchuttersContext(DbContextOptions<SchuttersContext> options) : base(options) { } // 这里要包含你Scaffold生成的实体,比如Clubs public DbSet<Club> Clubs { get; set; } } }
做完这两步,重启应用再点击导航栏的“Clubs”选项,应该就能正常加载Index视图了——DI容器现在知道该怎么创建SchuttersContext实例并注入到ClubController里了。
内容的提问来源于stack exchange,提问作者Neal Wicke
相关产品推荐
相关产品推荐

