尝试激活页面模型时无法解析类型 [DBcontext] 的服务

Unable to resolve service for type [DBcontext] while attempting to activate page model

我目前正在为我的 A-Level 计算编写一个 Asp.Net 项目。

我正在尝试访问我的数据库上下文 (UserGameKeyContext),以便我可以通过添加新记录来更新它。但是,当我初始化页面 /Play(我试图在其中添加这条新记录时)出现此错误;

InvalidOperationException: Unable to resolve service for type 
'Project_With_Identity.Models.UserGameKeyContext' while attempting to activate 
'Project_With_Identity.Pages.PlayModel'. 

我当前的问题是,我看到的与此错误相关的所有其他答案都与接口相关,而不是具体与数据库相关。

这里是/Play

using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;
using Microsoft.AspNetCore.Mvc;
using Microsoft.AspNetCore.Mvc.RazorPages;
using Microsoft.AspNetCore.Razor;
using Project_With_Identity.Hubs;
using Microsoft.AspNetCore.Identity;
using Project_With_Identity.Areas.Identity.Data;
using Project_With_Identity.Models;

namespace Project_With_Identity.Pages
{
    public class PlayModel : PageModel
    {
        private readonly UserManager<Project_With_IdentityUser> _userManager;
        private readonly SignInManager<Project_With_IdentityUser> _signInManager;
        private readonly UserGameKeyContext _gamekeycontext;
        public PlayModel(
            UserManager<Project_With_IdentityUser> userManager,
            SignInManager<Project_With_IdentityUser> signInManager,
            UserGameKeyContext gameKeyContext)
        {
            _userManager = userManager;
            _signInManager = signInManager;
            _gamekeycontext = gameKeyContext; 
        }

        //edited for Brevity
    }
} 

UserGameKeyContext gameKeyContext 似乎是问题所在 - 每当我尝试加载 /Play 页面时,我都会收到上述错误。

这里也是 UserGameKeyContext;

using System.Linq;
using System.Threading.Tasks;
using Project_With_Identity.Models;
using Project_With_Identity.Areas.Identity;
using System.Data.Entity;
using System.Data.Entity.ModelConfiguration.Conventions;

namespace Project_With_Identity.Models
{
    public class UserGameKeyContext : DbContext
    {
        public UserGameKeyContext() : base("UserGameKeyContext")
            {
            }

        public DbSet<UserGameKey> UserGameKeys { get; set; }
        protected override void OnModelCreating(DbModelBuilder modelBuilder)
        {
            base.OnModelCreating(modelBuilder);
            modelBuilder.Conventions.Add();
        }
    }
}

然后,我想做的是获取 /play 来加载 UserGameKeyContext,以便稍后在我的 /play 代码中我有一个我可以访问和修改的上下文变量,主要是为了我可以添加数据库中的新记录。如果我完全错误地初始化了这个数据库,我很想知道这样我就可以回到正确的轨道上 - 否则,帮助理解和解决这个问题将不胜感激。谢谢!

您必须使用 .NET 依赖注入注册所有注入类型,无论它们是接口还是具体 类。

Startup.cs中,您可以进行以下操作:

public void ConfigureServices(IServiceCollection services)
{
    services.AddMvc();
    // Other stuff...
    services.AddDbContext<UserGameKeyContext>();
}

进一步阅读:

https://docs.microsoft.com/en-us/ef/core/miscellaneous/configuring-dbcontext