[英]How do I query a user's teams in Dynamics 365 C# plugin?
The example shown here passes in the userID
and a string array of security names.此处显示的示例传入
userID
和安全名称字符串数组。 Then return true if the user has any security roles that match the names.如果用户具有与名称匹配的任何安全角色,则返回 true。
public static bool UserHasRoles(IOrganizationService service, Guid userId, params string[] roleNames)
{
var query = new QueryExpression("systemuserroles");
query.TopCount = 1;
query.ColumnSet.AddColumns("systemuserroleid");
query.Criteria.AddCondition("systemuserid", ConditionOperator.Equal, userId);
var query_role = query.AddLink("role", "roleid", "roleid");
query_role.LinkCriteria.AddCondition("name", ConditionOperator.In, roleNames);
var result = service.RetrieveMultiple(query);
return result.Entities.Any();
}
I need to recreate this code but to return true if the user is part of any teams that contain the same names.我需要重新创建此代码,但如果用户是包含相同名称的任何团队的一部分,则返回 true。 Below is my attempt:
以下是我的尝试:
public static bool UserHasRoles(IOrganizationService service, Guid userId, params string[] roleNames)
{
var query = new QueryExpression("teammembership");
query.TopCount = 1;
query.ColumnSet.AddColumns("teamMembershipId");
query.Criteria.AddCondition("systemuserid", ConditionOperator.Equal, userId);
var query_role = query.AddLink("team", "teamid", "teamid");
query_role.LinkCriteria.AddCondition("name", ConditionOperator.In, roleNames);
var result = service.RetrieveMultiple(query);
return result.Entities.Any();
}
When ran the code, I get an error运行代码时,出现错误
'TeamMembership' entity doesn't contain attribute with Name = 'teamMembershipId' and NameMapping = 'Logical'
'TeamMembership' 实体不包含 Name = 'teamMembershipId' 和 NameMapping = 'Logical' 的属性
I'm unsure if I am querying the equivalent entity correctly.我不确定我是否正确查询了等效实体。 Or I may be going about this in completely the wrong way.
或者我可能会以完全错误的方式解决这个问题。 Help would be great.
帮助会很棒。
Actually, you don't need any column to be returned.实际上,您不需要返回任何列。
Here's your code without ColumnSet
line, also I've corrected your method name and parameter name:这是没有
ColumnSet
行的代码,我还更正了您的方法名称和参数名称:
public static bool UserInTeams(IOrganizationService service, Guid userId, params string[] teamNames)
{
var query = new QueryExpression("teammembership");
query.TopCount = 1;
query.Criteria.AddCondition("systemuserid", ConditionOperator.Equal, userId);
var query_role = query.AddLink("team", "teamid", "teamid");
query_role.LinkCriteria.AddCondition("name", ConditionOperator.In, teamNames);
var result = service.RetrieveMultiple(query);
return result.Entities.Any();
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.