我在我的项目中实现了asp.net标识我有3个表(用户、角色、用户角色(我想得到一个用户列表,即使他们没有被分配到任何角色,但基本上我想在用户和角色之间创建一个左联接,这是我的数据库表
用户
public class User:IdentityUser<string>
{
public string Name { get; set; }
public ICollection<UserRoles> UserRoles { get; set; }
}
角色
public class Roles:IdentityRole<string>
{
public ICollection<UserRoles> UserRoles { get; set; }
public Roles():base(){}
public Roles(string roleName) : base(roleName){}
}
用户角色
public class UserRoles:IdentityUserRole<string>
{
public User User { get; set; }
public Roles Role { get; set; }
}
我想得到一个包含列UserName,Mail,Name,RoleName 的表
您不需要显式联接。所有内容都可以通过导航属性检索:
var query =
from u in context.Users
from ur in u.UserRoles.DefaultIfEmpty()
select new
{
UserName = u.Name,
Mail = u.Mail,
RoleName = ur.Role.Name
}