0

我有一个带有下表的 ASP.NET 自定义角色提供程序。

[Role] RoleName( PK, nvarchar(100) );

[PermissionGroup] PermissionId( PK, int );PermissionGroupName( nvarchar(256) );

[PermissionGroupHasRole] PermissionGroupId( PK, int );RoleName( PK, nvarchar(100) );

[User] UserId( PK, int ); UserName( nvarchar(100) );

[UserHasPermission] UserId( PK, int ); PermissionGroupId( PK, int );

这个想法是将角色分配给诸如“管理员”、“销售员”等权限级别,并且用户可以位于多个组中。例如,我可能是推销员和管理员。

我的问题是 SQL 或 Linq 查询如何获取给定用户的角色列表?例如一个函数,如

List<string> GetRolesForUser( int UserId )
{
   SQL Query.....
}
4

1 回答 1

0

它应该看起来像这样:

select PermissionGroupHasRole.RoleName
from PermissionGroupHasRole
where exists
(
  select null 
  from UserHasPermission
  where 
   UserHasPermission.UserId = UserId AND 
   UserHasPermission.PermissionGroupId = PermissionGroupHasRole.PermissionGroupId
)
于 2013-08-13T15:18:58.133 回答