1

基本上我有三个表用户角色和具有多对多关系的 USerRoles 以及部门表。所以当我在 .edmx 上导入这些时,我只得到两个实体。所以我在两个实体中都有导航属性。我有三个用户和两个角色(管理员和只读)。. 下面是我的 Sql 查询实体图

select U.UserName,r.RoleName,dp.DepName
from Users U
inner join UserRoles UR on U.UseID = UR.UserId
inner join Roles r on UR.RoleId = r.RoleID
inner join dbo.Department Dp on dp.DepId = U.DepId
group by r.RoleName,U.UserName,Dp.DepName 

这是我尝试过的 Linq 查询,我能够获取特定用户的 depName 但不能获取 RoleName。实际上,用户角色和 UerRoles 之间存在多对多关系。在我的上下文中,我没有 UserRoles 实体。请帮助我。

List<User> user = db.Users.Include("Department,Roles").ToList(); 
foreach (var U in user)
{ 
    Console.WriteLine(U.UseID + " " + U.UserName +" "+ U.Department.DepName+ " "+ U.Roles.);            
}
4

2 回答 2

1

只要您有多对多关系,您就需要遍历每个用户的每个角色:

foreach (var u in users)
{
    foreach (var r on u.Roles)
    {
        Comsole.WriteLine("User {0} has role {1}, u.UserName, r.RoleName);
    }
}
于 2012-07-03T12:28:43.153 回答
0

您必须为每张桌子做 1 次包含。您的查询应如下所示

List<User> users = db.Users.Include("Department").Include("Roles").ToList();
于 2012-07-03T12:25:53.820 回答