相关疑难解决方法(0)

如何在ASP.NET MVC 5中列出具有角色名称的用户

我有ASP.NET MVC 5网站的默认项目模板,我试图列出具有角色名称(而不是ID)的所有用户.

查询是:

db.Users.Include(u => u.Roles).ToList()
Run Code Online (Sandbox Code Playgroud)

然后我想用以下内容打印角色名称:

@string.Join(", ", user.Roles.Select(r => r.RoleId))
Run Code Online (Sandbox Code Playgroud)

问题是我只能访问RoleId,而不是Name存储其他属性的Role类.

我可以运行另一个select来获取所有角色,然后将其用作查找.或者直接在查询中写一个连接?我不知道是怎么回事,因为我无法访问IdentityUserRole具有绑定用户和角色的实体的表.

问题的根源似乎是Roles集合IdentityUserRole(非Role)仅包含RoleIdUserId.

public class IdentityUserRole<TKey> {
    public virtual TKey RoleId { get; set; }
    public virtual TKey UserId { get; set; }
}
Run Code Online (Sandbox Code Playgroud)

我想如果想要在EF中做N对N关系,他们应该直接收集Roles然后覆盖OnModelCreating并指定关系.这种方法似乎使从一个对象浏览对象变得复杂.

为什么他们决定将其IdentityUserRole作为额外的实 能够在关系中添加额外数据吗?代价是无法从用户导航到角色?

c# entity-framework-6 asp.net-mvc-5 asp.net-identity-2

11
推荐指数
1
解决办法
4万
查看次数