ASP.Net Core 3 MVC web应用程序与Identity
我的数据库上下文是
public class ApplicationDbContext : IdentityDbContext
{
public ApplicationDbContext(DbContextOptions<ApplicationDbContext> options)
: base(options)
{}
etc...
因此,来自IdentityUserContext的Users是一个公共虚拟DbSet,并被实例化为
数据库集<;Microsoft.AspNetCore.IdentityUser>Users
但是,我已经定义了ApplicationUser : IdentityUser
来定义我自己的配置文件数据。
public class ApplicationUser : IdentityUser
{
[Display(Name = "Is Manager")]
public bool IsSupervisor { get; set; }
etc....
因此,我在startup.cs中配置了以下服务:
services.AddDefaultIdentity<;ApplicationUser>(options=>options.SignIn.RequireConfirmedAccount=true(
我已将UserManager设置为
private readonly UserManager<;应用程序用户>_userManager
但当我尝试使用LINQ根据我的自定义配置文件信息(在对控制器的记录"详细信息"调用中(访问和筛选用户记录时,我被告知这些自定义属性不可用:
var managers = new List<SelectListItem>();
managers.AddRange(_context.Users.Where(x => x.IsSupervisor == true).Select(manager => new SelectListItem
{
Text = manager.DisplayName,
Value = manager.Id.ToString()
}).ToList());
ViewBag.ManagersList = managers;
/Users/robert/Projects/mvc/Vacate/Controllers/EmployesController.cs(59,59(:错误CS1061:"IdentityUser"不包含"IsSupervisor"的定义,并且找不到接受"Identity User"类型的第一个参数的可访问扩展方法"IsSupervision"(您缺少using指令或程序集引用吗?((CS1061((Vacate(
那么,在不使用单独的表来存储配置文件信息的情况下,有没有一种方法可以对访问您的自定义配置文件成员的用户使用LINQ?在LINQ调用中将"强制"用户类型设置为正确的ApplicationUser类型?或者在设置ApplicationUser类以在Identity中使用时遗漏了什么?
您应该使默认的ApplicationDbContext
使用新的ApplicationUser
:
public class ApplicationDbContext : IdentityDbContext<ApplicationUser>
{
public ApplicationDbContext(DbContextOptions<ApplicationDbContext> options)
: base(options)
{
}
}
更新您的数据库:Add-migration
,Update-Database
。