Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/32.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
创建ASP.Net角色表的外键_Asp.net_Subsonic_Asp.net Membership_Subsonic3_Membership - Fatal编程技术网

创建ASP.Net角色表的外键

创建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的答案获取所有分配了与当前登录用户角色之一匹配的角色的页面,我还有一个问题。我有一

我有一个Pages表,我有一个PagesRoles表,其中包含PageId、RoleID,链接到ASP.Net成员角色表和Pages表

我想返回一个链接到当前登录用户角色的页面

用户可以担任多个角色。一个页面可以有多个角色

我有一个Page类,它的外键属性为IQueryable。PageRoles有一个IQueryable到ASPNet角色表(IQueryable)和IQueryable

谢谢

编辑:

使用Adam的答案获取所有分配了与当前登录用户角色之一匹配的角色的页面,我还有一个问题。我有一个菜单表,它有一个PageID外键和一个CategoryID


我想退回类别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);你是否可以编辑你的其他问题或为此创建一个新问题,这将使它更容易。