Thursday, November 3, 2011

Retrieve related entity data (CRM 2011)



Team & users are N:N related. I might need to right 
long LinkEntity query to retrieve users for particular
team. Guess what, I can do it using RelatedEntitiesQuery
property of RetrieveRequest .

QueryExpression query = new QueryExpression(); 
query.EntityName = "systemuser";
 query.ColumnSet = new ColumnSet("systemuserid"); 
Relationship relationship = new Relationship();
 query.Criteria = new FilterExpression();
 query.Criteria.AddCondition(new ConditionExpression("isdisabled",
ConditionOperator.Equal, false)); // name of relationship between team & systemuser relationship.
SchemaName = "teammembership_association"; RelationshipQueryCollection relatedEntity = new RelationshipQueryCollection(); relatedEntity.Add(relationship, query);
RetrieveRequest request = new RetrieveRequest(); request.RelatedEntitiesQuery = relatedEntity; 
request.ColumnSet = new ColumnSet("teamid"); 
request.Target = new EntityReference { Id = teamId, LogicalName = "team" }; RetrieveResponse response = (RetrieveResponse)service.Execute(request);


if (((DataCollection)
(((RelatedEntityCollection)(response.Entity.RelatedEntities)))
).Contains(new Relationship("teammembership_association")) &&
((DataCollection)(((RelatedEntityCollection)
(response.Entity.RelatedEntities))
))[new Relationship("teammembership_association")
].Entities.Count > 0) 
return true; 
else return false;

No comments:

Post a Comment