使用identity 系统会默认生成 User、Role 和UserRole三张表,但是我在User表中加了CompanyId字段。我想查询当前 CompanyId是001的Role 是 01(admin)的所有用户。
如果是Sql直接就:select * from user,userrole where user.userid=userrole.userid and user.companyid="001" and userrole.roleid="01" 就好了。
但是由于小弟刚刚接触MVC比较愚钝,用linq不管怎么试都不行。我把我试的代码贴在下面:
尝试一:
AppRole role = RoleManager.FindById("R02");
var users = UserManager.Users.Where(u => u.Roles= role && u.Company="001" );
尝试二:
var users= UserManager.Users.Where(u => u.Roles.SingleOrDefault().RoleId = "01" && u.Company="001" )
AppRole 类:
public class AppRole : IdentityRole
{
public AppRole() : base() { }
public AppRole(string name) : base(name) { }
}
AppUser 类:
public class AppUser : IdentityUser
{
// 这里将放置附加属性
public AppUser() : base() { }
[Required]
public int CompanyId { get; set; }
public virtual Company Company { get; set; }
}
AppUserRole类 :
public class AppUserRole:IdentityUserRole
{
public AppUserRole() : base() { }
}
习惯受伤