我有一个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.....
}
答案 0 :(得分:0)
看起来应该是这样的:
select PermissionGroupHasRole.RoleName
from PermissionGroupHasRole
where exists
(
select null
from UserHasPermission
where
UserHasPermission.UserId = UserId AND
UserHasPermission.PermissionGroupId = PermissionGroupHasRole.PermissionGroupId
)