0

我有一个 Pages 表,我有一个 PagesRoles 表,其 PageId、RoleID 链接到 ASP.Net Membership Roles 表和 Pages 表。

我想以某种方式返回一个链接到当前登录的用户角色的页面。

用户可能担任多个角色。一个页面可以有多个角色反对它。

我有一个具有 IQueryable 外键属性的 Page 类。PageRoles 有一个 IQueryable 到 ASPNet Roles 表 (IQueryable) 和 IQueryable

谢谢

编辑:

使用亚当的回答来获取分配给它的角色的所有页面,该角色与当前登录的用户角色之一相匹配,我还有一个额外的问题。我有一个具有 PageID 外键和 CategoryID 的菜单表。

我想返回 CategoryID 为 4 的所有菜单项。对于那些具有 PageID 的菜单项,我需要确保允许用户根据其角色查看该页面。我认为亚当的查询会做到这一点。所以我认为我需要的是一个 UNION,返回 PageID 为 null 且 CategoryID 为 4 的所有菜单项,并返回 CategoryID 为 4 的所有菜单项,并加入当前用户角色所在的 Page->PageRole->ASPNetRole 在那个 ASPNetRole结果。

4

1 回答 1

0

如果您使用的是 SubSonic 3,则应使用如下查询:

var pagesForUser = from pages in Pages.All()
    join pagesRoles in PagesRoles.All() on pages.Id equals pagesRoles.PageID
    join roles in Roles.All() on pagesRoles.RoleId equals roles.Id
    where User.GetRoles().Contains(roles.Name)
  select pages;
于 2009-06-25T10:46:46.450 回答