У меня есть шаблон проекта по умолчанию веб-сайта ASP.NET MVC 5, и я пытаюсь перечислить всех пользователей с именами ролей (не идентификаторами).Как указать пользователей с именами ролей в ASP.NET MVC 5
Этот запрос:
db.Users.Include(u => u.Roles).ToList()
Тогда я хочу, чтобы напечатать имена ролей с чем-то вроде:
@string.Join(", ", user.Roles.Select(r => r.RoleId))
Проблема заключается в том, что я могу достичь только RoleId
, а не роль класса, где Name
и сохраняются другие свойства.
Я мог бы запустить другой выбор, чтобы получить все роли, а затем использовать его в качестве поиска. Или просто написать соединение в запросе? Я не уверен, потому что у меня нет доступа к таблице с объектами IdentityUserRole
, которые объединяют пользователей и роли.
Корень проблемы, как представляется, тот факт, что является сбор роли IdentityUserRole
(не Role
), который содержит только RoleId
и UserId
.
public class IdentityUserRole<TKey> {
public virtual TKey RoleId { get; set; }
public virtual TKey UserId { get; set; }
}
Я подумал, что если один хочет сделать отношения N-к-N в EF они должны поместить непосредственно коллекцию Roles
, а затем переопределить OnModelCreating
и определить отношения. Этот подход, похоже, усложняет просмотр объектов от одного к другому.
Почему они решили включить IdentityUserRole
в качестве дополнительного объекта? Уметь добавлять дополнительные данные в отношения? По стоимости не удается перейти от пользователей к ролям?
вы можете легко перемещаться от пользователя к ролям, там есть таблица соединений, потому что существует много-много отношений. Я не думаю, что команда Identity просто создала мусорную систему для удовольствия .... –
@ No1_Melman Не могли бы вы привести пример запроса (может быть, как ответ)? Благодарю. – NightElfik
Да, дайте мне минуту –