2016-10-10 4 views
0

SDKを使用して.netアプリケーションでcrmからデータを取得しようとしています。 リストを取得するために簡単なクエリを実行することができましたが、IDではなく項目を使用して関連するエンティティを取得したいと考えています。XRM SDKを使用してmsダイナミクスcrmから関連データを取得

LinkedEntitiesがちょうど戻っエンティティに2つの列を置くしかし、私は(これは機会テーブルからエンティティのコレクションを返します)

QueryExpression query = new QueryExpression 
    { 
    EntityName = "opportunity", 
.... 

LinkEntity linkEntityAccount = new LinkEntity() 
{ 
    LinkFromEntityName = "opportunity", 
    LinkFromAttributeName = "opportunityid", 
    LinkToEntityName = "serviceappointment", 
    LinkToAttributeName = "regardingobjectid", 
    JoinOperator = JoinOperator.Inner, 
    Columns = new ColumnSet(new string[] { "scheduledstart", "scheduledend" }), 
    EntityAlias = "service" 
}; 

query.LinkEntities.Add(linkEntityAccount); 

のようなものを試してみました。

サービスアポイントエンティティ/データを含むエンティティであることを希望します(この例では、entity.serviceappointment)。代わりに、このようなservice.scheduledstartservice.scheduledend

としての実体でそこにいるのフィールドで私はSDKでRelationshipRelationshipQueryCollection物事を見てきましたが、私は最初opportunityエンティティを取得せずに、クエリを実行しますクエリ設定することができませんでした。しかし、それは私が必要とするかもしれないように見える?よく分かりません。

これも可能ですか?あるいは、単にエンティティを個別にクエリする必要がありますか?私の知っている

おかげ

答えて

0

Entityオブジェクトとして)全体のリンクエンティティデータを取得するための自動的な方法はありません(それはないのですがあなたの心を、それは不可能だと言うために)。

しかし、別のリクエストで必要なデータを照会するほうがずっと簡単だと思います。

  • あなたは
  • を必要とする機会のリストは、2番目のクエリのための「IN」フィルタのパラメータとしてに関するオブジェクトIDを使用して下さい。
1

QueryExpressionにおいて、LinkEntityは結合を表す。そのため、結合された表のフィールドはEntity行にあります。彼らは、その名前が接頭辞(ドットを含む)であり、その値がAliasedValueオブジェクトにラップされているという事実によって、実際のエンティティ属性と区別することができます。

オブジェクトをアンラップして強く型付けしたEntityオブジェクトを作成することはできますが、コードを自分で記述する必要があります。

別の方法としては、いくつかの他のオプションを検討することができます

  1. クエリserviceappointmentレコードのをしてopportunityレコードを結合します。
  2. opportunityを1つずつ取得し、RetrieveRequestを使用して、関連するサービス予定のクエリを要求に含めます。 (StackOverflowのディスカッションも参照してください)
  3. 便利なOrganizationResponseで必要なすべてのデータを返すアクションを作成します。
関連する問題