1

Product と ProductType という 2 つのカスタム エンティティがあり、多対 1 の関係でリンクされています。製品には ProductType へのルックアップ フィールドがあります。

価格が 100 を超える Type1 製品と、価格が 100 未満の Type2 製品を取得するクエリを作成しようとしています。

SQL でそれを行う方法は次のとおりです。

select *
  from Product P
 inner join ProductType T on T.Id = P.TypeId
 where (T.Code = 'Type1' and P.Price >= 100)
    or (T.Code = 'Type2' and P.Price < 100)

正確にそれを行うために QueryExpression を構築する方法がわかりません。2 つのクエリで実行できることはわかっていますが、サーバーへのラウンドトリップを最小限に抑えたいと考えています。

そのクエリを 1 回の操作で実行する方法はありますか?

ありがとう!

4

3 に答える 3

1

QueryExpressionオブジェクトには、というプロパティがありますLinkEntitiesLinkEntity「結合」情報を指定するオブジェクトを作成し、それをリンクエンティティに追加できます。例えば:

QueryExpression q = new QueryExpression();
LinkEntity l = new LinkEntity();
l.LinkFromAttributeName = "fromatt";
l.LinkToAttributeName = "toatt";
l.LinkFromEntityName = "product";
l.LinkToEntityName = "producttype";

FilterExpression f = new FilterExpression();
f.AddCondition(new ConditionExpression("code", ConditionOperator.Equal, "type1"));
l.LinkCriteria = f;
q.LinkEntities.Add(l);

製品を取得しているQueryExpressionからProductTypeエンティティの属性に実際にアクセスすることはできないことに注意してください。そのためには、FetchXMLを使用する必要があります。

于 2009-06-17T22:02:49.403 に答える
0

残念ながら、いいえ、QueryExpression または FetchXML でそれを行うことはできません。少なくとも、Dynamics CRM 4 ではそうではありません。バージョン 5 (2010 年後半) にこの機能が含まれることを期待しましょう。

于 2010-06-03T14:37:10.573 に答える
0

LinqtoCRMも見てみましょう。結合されたエンティティの属性を取得できるように、クエリを FetchXML に変換します。

于 2009-06-18T07:15:46.467 に答える