1

基本的に、多対多の関係と部門テーブルを持つ 3 つのテーブル ユーザー ロールと USerRoles があります。したがって、これらを .edmx にインポートすると、2 つのエンティティしか得られません。そのため、両方のエンティティにナビゲーション プロパティがあります。3 人のユーザーと 2 つのロール (管理者と読み取り専用) があります。. 以下は私の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は取得できません。実際には、User ロールと UerRoles の間には多対多の関係があります。私のコンテキストでは、UserRoles Entity を持っていません。これについて私を助けてください。

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 に答える