Identity 2.0通过Linq获取Rolename和UserName

时间:2014-12-18 10:52:16

标签: c# linq asp.net-mvc-5 entity-framework-6 asp.net-identity

我已经上传了两张图片。

  1. 图片显示我在2013年Visual Studio中的edmx。
  2. 图片以ssms显示我的表格。
  3. 我只想在简单表(html)中使用UserName(AspNetUsers表中的Colmun [UserName])显示RoleName(Colmun [Name]在AspNetRoles表中)查看即具有所有相应角色的用户。如何使用LINQ执行此操作?My Edmx my Database

    更新1:我确实尝试了以下但是没有工作

    var result = from tb1 in context.Roles
                 join tb2 in context.Users on tb1.Id equals tb2.Id
                 select new { tb1.Name, tb2.UserName };
    

    但其错误实际上我希望Userid表中的所有用户Role代替tb1.Id [在LINQ代码中]以与Userid匹配User 1}}表[tb2.Id]。 当我尝试通过Roles表访问Userid时,就像Context.Roles.Users coz Users一样,这里是角色表的外键。

2 个答案:

答案 0 :(得分:1)

请尝试以上示例

var result = from tb1 in context.Users
             from tb2 in tb1.Roles
             join tb3 in context.Roles on tb2.RoleId equals tb3.Id
             orderby tb1.UserName, tb3.Name /*optional*/
             select  new { tb3.Name, tb1.UserName }

但要满足您的要求:

var result = from tb1 in context.Users
             from tb2 in tb1.Roles
             join tb3 in context.Roles on tb2.RoleId equals tb3.Id
             where tb3.Name == "Administrator"
             select  tb1.Id

答案 1 :(得分:0)

[AspNetRoles.[Id]列保留为主键,将[AspNetUsers].[Id]列保留为外键。让我们写这样的查询

var result = (from R in context.AspNetRoles
             join U in context.AspNetUsers
             ON R.Id equals U.Id
             select new{
             RoleName=R.Name,
             UserName=U.UserName});