尝试激活页面模型时无法解析类型 [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
我目前正在为我的 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