使用linq从IdentityUser列表中检索自定义配置文件数据



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-migrationUpdate-Database

相关内容

  • 没有找到相关文章

最新更新