0

与えられたエンティティ: チーム、ユーザー。それらの関係は N:N です。

質問: 指定されたチーム (指定された ID のリスト) に属するユーザーを見つけるにはどうすればよいですか。

PS。単一のチームを処理する方法を見つけましたが、チームのリストを処理する方法がわかりません?

var team_id = ...
QueryExpression query = new QueryExpression("user");

// setting up relation between teams and users
Relationship rel = new Relationship();
rel.SchemaName = "new_teams_users";

RelationshipQueryCollection relatedEntity = new RelationshipQueryCollection();
relatedEntity.Add(rel, query);

RetrieveRequest request = new RetrieveRequest();
request.RelatedEntitiesQuery = relatedEntity;
request.ColumnSet = new ColumnSet(new string[] {"id"});

request.Target = new EntityReference { Id = team_id, LogicalName = "new_team" };

// Results: List of users by team id.
RetrieveResponse response = (RetrieveResponse)CrmService.Execute(request);
4

2 に答える 2

3

intersect エンティティの QueryExpression ビルドが役立ちます。例として、製品と競合他社の N:N 関係を使用しました

QueryExpression qe = new QueryExpression()
{
    EntityName = "competitorproduct",  //this name can be get from N:N rel properties (Relationship form, Relationship Entity Name field)
    ColumnSet = new ColumnSet(true),
};

qe.Criteria.AddCondition(
    "competitorid", 
    ConditionOperator.In, 
    new object[] { "GUID1", "GUID2"});

//Below is optional - if you need some details of entity, add LinkEntity object. This example adds all fields from product entity
LinkEntity lePorduct = new LinkEntity("competitorproduct", "product", "productid", "productid", JoinOperator.Inner);
lePorduct.Columns = new ColumnSet(true);
qe.LinkEntities.Add(lePorduct);
于 2013-10-17T22:07:15.170 に答える