バッチ処理 (WCF Data Services)

Open Data Protocol (OData) は、OData ベースのサービスに対する要求のバッチ処理をサポートしています。 詳細については、「OData: バッチ処理」を参照してください。WCF Data Services では、DataServiceContext を使用する各操作 (クエリの実行や変更の保存など) は、データ サービスに個別に送信される要求になります。 操作セットの論理スコープを維持するために、操作バッチを明示的に定義する必要があります。 この定義により、バッチ内のすべての操作が 1 つの HTTP 要求でデータ サービスに送信され、サーバーが操作を自動的に処理できるようになり、データ サービスへのラウンド トリップの数が減少します。

クエリ操作のバッチ処理

複数のクエリを 1 つのバッチで実行するには、バッチ内の各クエリを DataServiceRequest<TElement> クラスの個別のインスタンスとして作成する必要があります。 この方法でクエリ要求を作成すると、クエリ自身が URI として定義されます。このクエリは、リソースのアドレス指定のルールに従います。 詳細については、「OData サービスへのアクセス (WCF Data Services)」を参照してください。 バッチ化されたクエリ要求は、クエリ要求オブジェクトを含む ExecuteBatch メソッドが呼び出されたときにデータ サービスに送信されます。 このメソッドは、DataServiceResponse オブジェクトを返します。このオブジェクトは、バッチ内の個々の要求への応答を表す QueryOperationResponse<T> オブジェクトのコレクションです。個々のオブジェクトには、クエリによって返されるオブジェクトのコレクションまたはエラー情報が含まれます。 バッチ内のいずれかのクエリ操作が失敗した場合、QueryOperationResponse<T> オブジェクトで失敗した操作のエラー情報が返され、残りの操作は引き続き実行されます。 詳細については、「方法: クエリをバッチで実行する (WCF Data Services)」を参照してください。

バッチ クエリは、非同期で実行することもできます。 詳細については、「非同期操作 (WCF Data Services)」を参照してください。

変更の保存操作のバッチ処理

SaveChanges メソッドを呼び出すとき、コンテキストが追跡するすべての変更が REST ベースの操作に変換され、OData サービスに対する要求として送信されます。 既定では、これらの変更は 1 つの要求メッセージで送信されません。 すべての変更を 1 つの要求で送信するには、SaveChanges(SaveChangesOptions) メソッドを呼び出して、メソッドに指定する SaveChangesOptions 列挙体に Batch の値を含める必要があります。

バッチ処理された変更を非同期で保存することもできます。 詳細については、「非同期操作 (WCF Data Services)」を参照してください。

関連項目

その他の技術情報

データ クライアント (WCF Data Services)