ASP MVC Identity 2 получает пользователя в роли «Пользователь» - PullRequest
0 голосов
/ 29 ноября 2018

Я добавляю пользователя и назначаю роль, как показано ниже, сначала я использую удостоверение ASP MVC 5 и код EF.

//some Code
                var result = manager.Create(insert, applicationUser.PasswordHash);
                IdentityResult result2 =null;
                if (result.Succeeded)
                {
                result2 = manager.AddToRole(insert.Id, "User");
}
//Some Code

Поэтому мне нужно показать список пользователей с настраиваемой ролью в виде "Пользователь"роль.я написал этот код:

    ApplicationDbContext myDbContext = new ApplicationDbContext();
    var getRoleId = myDbContext.Roles.Where(r => r.Name == "User").Select(m => m.Id).SingleOrDefault();
    var fetch = myDbContext.Users.Where(u => u.Roles.Any(r => r.RoleId.ToString() == getRoleId)).ToList();
    return View(fetch);

getRoleId значение равно "4", это правильно, но fetch всегда считается равным 0. Я пытаюсь больше чем 3 4 часа, но я не могу получить результат.Где моя ошибка?и какое решение?Спасибо.

ОБНОВЛЕНИЕ: Я нашел свою проблему в добавлении роли, но я не знаю, как это исправить!При добавлении пользователей к ролям с использованием вышеизложенного идентификатор пользователя добавляется в столбец UserId таблицы UserRoles, но существует третий столбец с именем IdentityUser_Id, который всегда был нулевым.

Из любопытства я добавил своего пользователяИдентификатор этой колонки, а теперь все работает.приложение подобрало мою роль пользователя.

Мой следующий вопрос: могу ли я автоматически установить IdentityUser_Id?используя что-то похожее на UserManager.AddToRole (), который добавляет userId в оба столбца?

1 Ответ

0 голосов
/ 29 ноября 2018

Почему вы получаете getRowId, а не вытягиваете пользователей по имени роли?Попробуйте ниже:

  var fetch = myDbContext.Users.Where(u => u.Roles.Any(r => r.Name == 
     "User")).ToList();
...