Comment afficher la liste des utilisateurs avec des noms de rôle dans ASP.NET MVC 5

J'ai par défaut le modèle de projet de ASP.NET MVC 5 site web et je suis en train de lister tous les utilisateurs avec des noms de rôle (pas d'Id).

La requête est:

db.Users.Include(u => u.Roles).ToList()

Alors je veux imprimer les noms de rôle avec quelque chose comme:

@string.Join(", ", user.Roles.Select(r => r.RoleId))

Le problème est que je ne peut toucher que RoleId, pas Rôle de la classe où Name et d'autres propriétés sont stockées.

J'ai pu exécuter un autre select pour obtenir tous les rôles et ensuite l'utiliser comme une recherche. Ou écrire une jointure dans la requête directement? Je ne suis pas sûr de savoir comment, car je n'ai pas accès à la table avec IdentityUserRole des entités de liaison des utilisateurs et des rôles.

La racine du problème semble être le fait que les Rôles de la collection de IdentityUserRole (pas Role) qui ne contient que des RoleId et UserId.

public class IdentityUserRole<TKey> {
    public virtual TKey RoleId { get; set; }
    public virtual TKey UserId { get; set; }
}

J'ai pensé que si l'on veut faire de la N-de-N de la relation en EF ils devraient mettre directement la collecte de Roles puis remplacer OnModelCreating et de spécifier les relations. Cette approche semble compliquer la navigation sur les objets de l'un à l'autre.

Pourquoi ils ont décidé d'inclure IdentityUserRole supplémentaire entité? Pour être en mesure d'ajouter des données supplémentaires pour les relations? Au coût de ne pas être en mesure de naviguer d'utilisateurs à des rôles?

vous pouvez naviguer facilement d'un utilisateur à des rôles, la table de jointure est parce qu'il y est une relation plusieurs-à-plusieurs. Je ne pense pas que l'Identité de l'équipe juste faire un les ordures système pour le plaisir....
Pourriez vous s'il vous plaît inclure un exemple de la requête (peut-être comme une réponse)? Merci.
Ouais donnez-moi une minute

OriginalL'auteur NightElfik | 2014-12-07