Secondo la risposta di Matt:
- Recuperare sul privilegio entità
- registrazione su entità roleprivilege dove privilege.privilegeid = roleprivilege.privilegeid
- Partecipa all'entità systemuserrole dove systemuserrole.roleid = roleprivileges.roleid e systemuserrole.systemuserid = (GUID dell'utente in questione)
- Allora o scorrere i privilegi o cercare privilegio in cui privilege.name = "prvReadMyEntityName"
Avete appena necessario eseguire i join e aggiungere la clausola where a cui tieni. Ecco lo SQL Equivalente:
SELECT Privilege.*
FROM Privilege
INNER JOIN RolePrivilege ON Privilege.PrivilegeId = RolePrivilege.PrivilegeId
INNER JOIN SystemUserRole ON SystemUserRole.RoleId = RolePrivileges.RoleId AND SystemUserRole.SystemUserId = (user's GUID)
-- WHERE Add whatever constraints on the Privilege entity that you need
È possibile eseguire questa operazione utilizzando Fetch XML, o LINQ to CRM, o espressioni di query, o addirittura OData.
Restituisce le informazioni utente di base, non i loro privilegi – Daryl
Buon punto @Daryl – Bvrce