2

CRM 2011 展開用のカスタム Web サービスに取り組んでおり、現在、いくつかのエンティティに関連する概要を作成しています。product製品名やカテゴリなどの詳細を含むカスタムエンティティがあり、顧客agreementにリンクし、productその顧客に固有の製品の詳細を含むエンティティがあります。N:1 の関係がありますagreementproduct

現在、CRM の顧客ページに表示される概要ページを作成しています。このページにはagreement、その顧客に関するすべての が表示されます。この表示のために、productこれらの契約書がリンクしている sに関する情報も取得する必要があります。この情報agreementは、概要ページで s をグループ化するために使用されます。これに関連する/特定の例を見つけることができませんでした。必要なデータを照会する実行可能な方法を見つけようとしています。

私が想像する方法では、必要なデータを取得するために 2 つのクエリを使用したいと考えています。まず、agreement顧客のすべての を取得するクエリ。次に、このリストを 2 番目のクエリに渡します。このクエリはproduct、最初のリストと交差するすべての を返します。を使用してこれは可能ですQueryExpressionか、またはリストをループして、agreement個々の関連付けごとに個別のクエリを実行する必要がありますか? FetchXMLできれば避けたいです。

4

3 に答える 3

3

あなたの質問が正しく理解できれば、最初のクエリでLinkEntityを Product エンティティに追加するだけで済みます。Product エンティティの属性を指定して返すこともできますが、AliasedValuesとして返されるので注意してください。

于 2013-03-21T12:37:29.510 に答える
1

Darylsの回答に加えて、エンティティをリンクする方法の例については、この投稿を参照してください。MSDNはこの件に関して混乱しています(少なくとも私にとっては)。

私はそこでクエリ式の優れた構造を提案していますが、Darylはよりコンパクトな同等のものを提供します。(もちろん私の方がいいです。:D)

于 2013-03-21T21:33:50.430 に答える
0

ConditionOperator.In私は LinkEntity を見ましたが、次のように、最終的に 2 番目のクエリでやりたかったことを達成しました。

query.Criteria.AddCondition(
    new ConditionExpression(
        "myprefix_productid",
        ConditionOperator.In,
        agreementList )
);

はsのagreementList配列ですGuid。質問を投稿する前にもこれを試しましたが、パラメーターを でラップせずに、うまくいきnew ConditionExpression()ませんでした。おそらくこれは、暗黙的な方法でAddCondition関数の間違ったオーバーロードが呼び出されたためです。

他の回答の便利なリンクですが、それらも調べます!

于 2013-04-04T10:50:52.890 に答える