Создать внешний ключ для таблицы ролей ASP.Net - PullRequest
0 голосов
/ 24 июня 2009

У меня есть таблица Pages, у меня есть таблица PagesRoles с PageId, RoleID, который связан с таблицей ролей членства ASP.Net и таблицей Pages.

Я хочу как-то вернуть страницу, которая ссылается на пользователя, который в данный момент вошел в систему.

Пользователь может играть более чем одну роль. Страница может иметь более одной роли против нее.

У меня есть класс Page, который имеет свойство внешнего ключа IQueryable. PageRoles имеет таблицу IQueryable to ASPNet Roles (IQueryable) и IQueryable

Спасибо

EDIT:

Используя ответ Адама, чтобы получить все страницы, которым назначена роль, которая соответствует одной из ролей пользователя, вошедшего в данный момент в систему, у меня возникла дополнительная проблема. У меня есть таблица меню, которая имеет внешний ключ PageID и CategoryID.

Я хотел бы вернуть все элементы меню с CategoryID, равным 4. Для тех, у кого есть PageID, мне нужно убедиться, что пользователю разрешено просматривать эту страницу в зависимости от его роли. Я думаю, что запрос Адама сделает это. Поэтому я думаю, что мне нужен UNION, вернуть все элементы меню, где PageID равен нулю, а CategoryID равен 4, и вернуть все элементы меню, где CategoryID равен 4, и присоединиться к Page-> PageRole-> ASPNetRole, где роли текущего пользователя находятся в этом ASPNetRole результаты.

1 Ответ

0 голосов
/ 25 июня 2009

Если вы используете 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;
...