创建ASP.Net角色表的外键
我有一个Pages表,我有一个PagesRoles表,其中包含PageId、RoleID,链接到ASP.Net成员角色表和Pages表 我想返回一个链接到当前登录用户角色的页面 用户可以担任多个角色。一个页面可以有多个角色 我有一个Page类,它的外键属性为IQueryable。PageRoles有一个IQueryable到ASPNet角色表(IQueryable)和IQueryable 谢谢 编辑: 使用Adam的答案获取所有分配了与当前登录用户角色之一匹配的角色的页面,我还有一个问题。我有一个菜单表,它有一个PageID外键和一个CategoryID创建ASP.Net角色表的外键,asp.net,subsonic,asp.net-membership,subsonic3,membership,Asp.net,Subsonic,Asp.net Membership,Subsonic3,Membership,我有一个Pages表,我有一个PagesRoles表,其中包含PageId、RoleID,链接到ASP.Net成员角色表和Pages表 我想返回一个链接到当前登录用户角色的页面 用户可以担任多个角色。一个页面可以有多个角色 我有一个Page类,它的外键属性为IQueryable。PageRoles有一个IQueryable到ASPNet角色表(IQueryable)和IQueryable 谢谢 编辑: 使用Adam的答案获取所有分配了与当前登录用户角色之一匹配的角色的页面,我还有一个问题。我有一
我想退回类别ID为4的所有菜单项。对于那些有PageID的用户,我需要确保允许用户根据其角色查看该页面。我认为亚当的提问会做到这一点。所以我认为我需要的是一个联合,返回PageID为null,CategoryID为4的所有菜单项,返回CategoryID为4的所有菜单项,并连接到当前用户角色所在的页面->PageRole->ASPNetRole,ASPNetRole结果中的当前用户角色。如果您使用的是亚音速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;
那是布里尔,谢谢。我真的在为LINQ的东西和亚音速的正确语法而挣扎,但那是另一个问题。我还有一个我应该提到的问题。我有一个带有PageID列的菜单表。并非所有菜单项都有PageID,但对于那些有PageID的菜单项,我需要执行您的查询,但我希望合并它,以便我可以从PageID为null的菜单或您的查询中选择all。我在这里概述了这个问题——如果有帮助的话。希望你明白我的意思。再次感谢你没有问题,我来看看另一个问题。如果你想了解linq的最新情况,我建议你买一本o'reilly pocket reference,这是一本很棒的小书。谢谢。希望你明白我想做什么。自从有人提出这个问题以来,我已经改变了我的模型,并用多对多页面表替换了角色列。可能会得到那本书,只是我对在C#中进行连接感到困惑,但是你在亚音速类中有一个foregin键属性,所以我想我应该使用它。我尝试了这个,但没有运气。var test=(从menu.All()中的菜单。其中(x=>x.PageID==null)选择menu)。Union(从menu.All()中的menu2连接网页中的网页。menu2.PageID上的All()等于pages.ID在PageRole中连接pagesRoles。pages.ID上的All()等于pagesRoles.PageID在aspnet_角色中连接角色。All()在页面上,roles.RoleId等于roles.RoleId,其中roles.GetRolesForUser()包含(roles.RoleName)选择菜单2);你是否可以编辑你的其他问题或为此创建一个新问题,这将使它更容易。