ASP.Net Core 3 MVC веб-приложение с Identity
Мой контекст БД
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 как
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 /Проекты / mvc / Vacate / Controllers / EmployeesController.cs (59,59): Ошибка CS1061: «IdentityUser» не содержит определения для «IsSupervisor», и ни один из доступных методов расширения «IsSupervisor», принимающий первый аргумент типа «IdentityUser», не можетбыть найденным (вы не используете директиву using или ссылку на сборку?) (CS1061) (Vacate)
Таким образом, без использования отдельной таблицы для хранения информации профиляИон, есть ли способ использовать LINQ против пользователей, имеющих доступ к вашим пользовательским профилям? Что-то вроде «приведения» «Пользователи» - это правильный тип ApplicationUser в вызове LINQ? Или я что-то упустил при настройке класса ApplicationUser для использования в Identity?