QueryExpression でクエリを作成する

 

公開日: 2017年1月

対象: Dynamics 365 (online)、Dynamics 365 (on-premises)、Dynamics CRM 2016、Dynamics CRM Online

Microsoft Dynamics 365 (オンラインおよび設置型) では、QueryExpression クラスを使用して、データベース検索の範囲を定義した検索条件とデータ フィルターが含まれるクエリをプログラムで作成できます。 クエリ式は単一オブジェクトの検索に使用されます。 たとえば、ある特定の検索条件に合致するすべての取引先企業を返す検索を作成できます。QueryBase クラスは、クエリ式の基本クラスです。 派生クラスには QueryExpressionQueryByAttribute の 2 つがあります。QueryExpression クラスは、複雑なクエリをサポートします。QueryByAttribute クラスでは、指定した値と属性が一致するエンティティを簡単に検索することができます。

クエリ式は、複数のレコードを取得するメソッド (IOrganizationService.RetrieveMultiple など)、およびクエリ式で指定された結果セットに対して操作を実行するメッセージ (BulkDeleteRequest など) で使用されます。また、指定のレコードの ID が不明なときにも使用されます。

さらに、Organization.QuickFindRecordLimitEnabled という新しい組織エンティティの属性もあります。 この Boolean 属性が true の場合、簡易検索クエリに制限が適用されます。 ユーザーが十分な選択性のない検索条件を指定した場合、システムはこれを検出し、検索を停止します。 これにより、より迅速な簡易検索がサポートされ、パフォーマンスを大幅に向上させることができます。

警告

パフォーマンスへの悪影響があるため、クエリの全属性を取得しないようにしてください。 これは、クエリが更新要求へのパラメーターとして使用される場合は特に true になります。 更新では、すべての属性が含まれている場合、これによりすべてのフィールド値が、変更されなくても設定されます。また、多くの場合子レコードへ更新の伝播が発生します。

Microsoft Dynamics 365 からレコードを取得するためのクエリを作成する方法は、さらに 2 つあります。FetchXML (独自の Microsoft Dynamics 365 クエリ言語) を使用すると、XML ベースのクエリを使用してクエリを実行できます。 詳細については、「FetchXML を使用したクエリの構築」を参照してください。 また、.NET 統合言語クエリ (LINQ) でもクエリを作成できます。詳細:LINQ (.NET 統合言語クエリ) を使用してクエリを作成する

クエリを保存するには、QueryExpressionToFetchXmlRequest を使用してクエリを FetchXML に変換し、userquery エンティティを使用して、それを保存されたビューとして保存します。

このセクションの内容

QueryByAttribute クラスの使用

QueryExpression クラスの使用

ColumnSet クラスの使用

ConditionExpression クラスの使用

FilterExpression クラスの使用

左外部結合を QueryExpression で使用して "存在しない" 記録をクエリする

null 値のテスト

QueryExpression を使用して大きな結果セットをページングする

サンプル: 一対多関連付けでの取得

サンプル: QueryByAttribute クラスを使用した複数取得

サンプル: QueryExpression クラスを使用した複数取得

サンプル: ページング Cookie を使用した QueryExpression の使用

参照

QueryBase

QueryExpression

QueryByAttribute

RetrieveMultiple

ColumnSet

ConditionExpression

FilterExpression

PagingCookie

関連項目

サンプル: Fetch と QueryExpression の間でクエリを変換する

Microsoft Dynamics 365

© 2017 Microsoft. All rights reserved. 著作権