Dynamics CRM 2011 SDK クエリの選択肢

みなさん、こんにちは。

前回に続き今回も SDK 5.0.12 で提供された情報からクエリの
選択肢に関する内容を紹介します。

Choose your Development Style for Managed Code for Microsoft Dynamics CRM 2011 and Microsoft Dynamics CRM Online
https://msdn.microsoft.com/en-us/library/jj602917

クエリの選択肢

SDK を利用してデータをクエリする場合、以下の選択肢があり、
それぞれ特徴があります。

FetchXML

FetchXML はクエリを XML 形式で記述でき、QueryExpression の
機能および集計とグルーピングが可能です。複数のエンティティを
結合した結果を出力でき、クエリ自体はデータベース内に保存
可能です。FetchXML はユーザー定義のビューやシステムレベル
のビューで利用されています。

結果を集計やグルーピングする必要がある場合に利用してください。

QueryExpression

QueryExpression は単体のエンティティのクエリーで利用可能で、
オブジェクトモデルに基づき作成されるため、Intellisence を利用
した開発が可能です。事前バインドおよび遅延バインドの両方を
サポートします。

LINQ

多くの .NET 開発者になじみのある LINQ 形式でクエリを記述できます
が、機能は QueryExpression と動とうです。LINQ も事前バインドおよび
遅延バインドをサポートします。

その他の選択肢

このページには記載がありませんが、他の選択肢してとして以下の
手法が考えられます。

Retrieve メソッド

シンプルにデータを取得する場合、Retrieve メソッドを利用できます。

T-SQL

設置型を利用している場合、状況に応じて SQL サーバーに対して
直接クエリを実行できます。ただしフィルター化されたビューのクエリ
のみがサポート対象となります。

まとめ

データ取得も複数の方法が提供されるため、最適な手法を選択する
必要がありますが、すべてのクエリに共通して、無駄な列、行の取得
を避けることがベストプラクティスとなります。またフィルター条件によって
データベース側にカスタムインデックス作成することも検討してください。

‐ Dynamics CRM サポート 中村 憲一郎