문제

페이지 테이블이 있고 ASP.NET 멤버십 역할 테이블 및 페이지 테이블에 연결되는 PageId, RoleID가있는 PagesRoles 테이블이 있습니다.

어떻게 든 현재 로그인 한 사용자의 역할에 연결되는 페이지를 반환하고 싶습니다.

사용자는 둘 이상의 역할 일 수 있습니다. 페이지는 그것에 대해 하나 이상의 역할을 할 수 있습니다.

IQueryable의 외국 키 속성이있는 페이지 클래스가 있습니다. PageRoles에는 ASPNet 역할 테이블 (IQueryable) 및 IQueryable이 있습니다.

감사

편집하다:

Adam의 답변을 사용하여 현재 로그인 한 사용자의 역할 중 하나와 일치하는 역할을 할당 한 모든 페이지를 얻을 수 있습니다. PageId 외국 키와 CategoryID가있는 메뉴 테이블이 있습니다.

PageID가있는 사람들의 경우 CategoryID가있는 모든 메뉴 항목을 반환하고 싶습니다. 사용자가 자신의 역할에 따라 해당 페이지를 볼 수 있는지 확인해야합니다. 아담의 질문이 그렇게 할 것이라고 생각합니다. 그래서 내가 필요한 것은 노조, pageid가 null이고 categoryId가 4 인 모든 메뉴 항목을 반환하고 CategoryId가 4이고 Page에 가입하는 모든 메뉴 항목을 반환하고 현재 사용자의 역할이 해당 Aspnetrole의 현재 사용자의 역할이있는 모든 메뉴 항목을 반환합니다. 결과.

도움이 되었습니까?

해결책

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;
라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top