自定义角色提供程序的复杂SQL查询

时间:2013-08-13 06:47:41

标签: sql linq

我有一个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.....
}

1 个答案:

答案 0 :(得分:0)

看起来应该是这样的:

select PermissionGroupHasRole.RoleName
from PermissionGroupHasRole
where exists
(
  select null 
  from UserHasPermission
  where 
   UserHasPermission.UserId = UserId AND 
   UserHasPermission.PermissionGroupId = PermissionGroupHasRole.PermissionGroupId
)