Pregunta

Tengo una tabla de Pages, tengo una tabla de PagesRoles con PageId, RoleID que enlaza con la tabla de roles de membresía de ASP.Net y la tabla de Pages.

Quiero de alguna manera devolver una página que se vincule a los roles de usuario actualmente conectados.

El usuario puede tener más de un rol. Una página puede tener más de un rol en su contra.

Tengo una clase de página que tiene una propiedad de clave externa de IQueryable. PageRoles tiene una tabla de Roles IQueryable a ASPNet (IQueryable) e IQueryable

Gracias

EDIT:

Utilizando la respuesta de Adam para obtener todas las páginas que tienen un rol asignado que coincide con uno de los roles del usuario actualmente conectado, tengo un problema adicional. Tengo una tabla de menú que tiene una clave externa ID de página y un Id. De categoría.

Me gustaría devolver todos los elementos del menú con un Id. de categoría de 4. Para aquellos que tienen un Id. de página, debo asegurarme de que el usuario pueda ver esa página en función de su función. Creo que la consulta de Adam haría eso. Por lo tanto, creo que lo que necesito es una UNIÓN, devolver todos los elementos del menú donde PageID es nulo y CategoryID es 4 y devolver todos los elementos del menú donde CategoryID es 4 y unirse a Page- > PageRole- > ASPNetRole donde se encuentran los roles de los usuarios actuales que resulta ASPNetRole.

¿Fue útil?

Solución

Si está utilizando SubSonic 3, una consulta como la siguiente debería funcionar:

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;
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top