【发布时间】:2020-02-20 01:37:50
【问题描述】:
带有身份的 ASP.Net Core 3 MVC Web 应用程序
我的数据库上下文是
public class ApplicationDbContext : IdentityDbContext
{
public ApplicationDbContext(DbContextOptions<ApplicationDbContext> options)
: base(options)
{}
etc...
因此,来自 IdentityUserContext 的用户是一个公共虚拟 DbSet,并被实例化为
DbSet
用户
但是,我定义了ApplicationUser : IdentityUser 来定义我自己的个人资料数据。
public class ApplicationUser : IdentityUser
{
[Display(Name = "Is Manager")]
public bool IsSupervisor { get; set; }
etc....
所以,我在 startup.cs 中将服务配置为:
services.AddDefaultIdentity
(options => options.SignIn.RequireConfirmedAccount = true)
我已将我的 UserManager 设置为
私有只读 UserManager
_userManager
但是当我尝试使用 LINQ 根据我的自定义配置文件信息(在对控制器的记录“详细”调用中)使用 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/EmployeesController.cs(59,59):错误 CS1061:“IdentityUser”不包含“IsSupervisor”的定义,并且没有可访问的扩展方法“IsSupervisor”接受可以找到“IdentityUser”类型的第一个参数(您是否缺少 using 指令或程序集引用?)(CS1061)(Vacate)
那么,在不使用单独的表来存储配置文件信息的情况下,有没有办法对访问您的自定义配置文件成员的用户使用 LINQ?将“演员”用户排序为 LINQ 调用中的正确 ApplicationUser 类型?或者我在设置 ApplicationUser 类以在 Identity 中使用时遗漏了什么?
【问题讨论】:
标签: linq asp.net-core-mvc asp.net-identity asp.net-core-3.0