2017-12-28 35 views
0

エンティティを別のエンティティでフィルタリングして取得しました。別のフィルタリングレベルを追加する必要があります。linkentity現在のリンクエンティティを追加できますか?それを書く方法は何ですか?複数のリンケージに基づいてエンティティを取得する方法は?

これは現在正常に動作するコードです。

QueryExpression query = new QueryExpression("entity1"); 
query.Criteria.AddCondition(new ConditionExpression("statecode", ConditionOperator.Equal, 0));   
query.ColumnSet = new ColumnSet("entity1Id"); 
LinkEntity Link = new LinkEntity("entity1", "entity2", "entity2Id", "entity2Id", JoinOperator.LeftOuter); 
Link.LinkCriteria.AddCondition(new ConditionExpression("statecode", ConditionOperator.Equal, 0));   
    Link.Columns = new ColumnSet("entity2Data"); 
    Link.EntityAlias = "entity2"; 
    query.LinkEntities.Add(Link); 

結論:エンティティ3に従ってフィルタリングをentity2に追加する必要があります。

UPDATE:私はこのコードを追加:

QueryExpression query = new QueryExpression("entity1"); 
    query.Criteria.AddCondition(new ConditionExpression("statecode", ConditionOperator.Equal, 0));        
    query.ColumnSet = new ColumnSet(true); 
    LinkEntity portfolioLink = new LinkEntity("entity1", "entity2", "**entity2dI**", "entity2Id", JoinOperator.LeftOuter); 
    portfolioLink.LinkCriteria.AddCondition(new ConditionExpression("statecode", ConditionOperator.Equal, 0));     
query.LinkEntities.Add(portfolioLink); 
LinkEntity portfolioLink2 = new LinkEntity("entity3", "entity2", "entity2Id", "entity2Id", JoinOperator.LeftOuter); 
portfolioLink2.LinkCriteria.AddCondition(new ConditionExpression("statecode", ConditionOperator.Equal, 0));     
query.LinkEntities.Add(portfolioLink2); 
EntityCollection characterizationeedsCollection = Service.RetrieveMultiple(query); 

私はentity1がentity2Idフィールドを認識しないという例外を取得、** entity1フィールドの名前が、残念ながら**少し異なっているが、それは前にうまく働きました第3のエンティティを追加する

答えて

0

第1のリンクエンティティと同じです。既存のコードに加えて、以下のような別のリンクエンティティを追加します。

 LinkEntity Link2 = new LinkEntity("entity2", "entity3", "entity3Id", "entity3Id", JoinOperator.LeftOuter); 
     Link2.LinkCriteria.AddCondition(new ConditionExpression("statecode", ConditionOperator.Equal, 0));   
     Link2.Columns = new ColumnSet("entity3Data"); 
     Link2.EntityAlias = "entity3"; 
     query.LinkEntities.Add(Link2); 
+0

私はそれを試してみましたが、私は、エンティティ1とエンティティ2のフィールド名を接続するので、私はエラーを取得し、entity2の接続フィールドと同じではありませんし、エンティティ3.すべての接続フィールドはすべてのリンクされたエンティティで同じである必要があります。 – Damkulul

+0

@Damkulul FKのdiffエンティティと同じスキーマ名はどうでもいいですか? –

+0

私のコードを追加しましたが、私の例外はentity1がentity3フィールドを認識しないということです...私のコードは大丈夫ですか? – Damkulul

関連する問題