0

私はこのモデルを持っています

ここに画像の説明を入力

私の目標は、そのユーザーと制限された役割を共有するリソースを除いて、そのユーザーのすべてのリソースを取得することです。

これは、ストレート SQL ではそれほど難しくありません (6BA60C09-2873-46A5-BAFB-5996A6C6482B はユーザー ID です)。

SELECT distinct r.Name
FROM  dbo.Resources xr 
INNER JOIN [dbo].[x_Resource_RestrictedRole] rr ON  xr.Id = rr.ResourceId
INNER JOIN [dbo].[aspnet_UsersInRoles] ur ON ur.RoleId = rr.RoleId  
    AND ur.UserId = '6BA60C09-2873-46A5-BAFB-5996A6C6482B'
RIGHT JOIN dbo.Resources r on r.id = xr.id 
WHERE xr.id IS NULL

EF関連テーブルにアクセスできないため、これに対する適切な戦略がわかりません。

これはLINQまたはラムダ式で行うことができますか?

4

1 に答える 1

0

ある種の質問がありますが、私はあなたについて答えようとしますquery

var y = (from xr in context.Resources
         join rr in context.x_Resource_RestrictedRole on xr.Id equals rr.ResourceId
         join ur in context.aspnet_UsersInRoles on rr.RoleId  equals ur.RoleId
         join r in context.Resources on xr.id equals r.id into rJoin
         from r2 in rJoin.DefaultIfEmpty()
         where xr.id == null && ur.UserId = "6BA60C09-2873-46A5-BAFB-5996A6C6482B"
         select new { r.Name }).Distinct(c => c.Name).ToList();
于 2013-02-14T05:05:24.330 に答える