ClientView オブジェクトは、サーバー上で実行できるクエリーを表しています。その点では、Entity Framework や RIA サービスのクエリーと同じ機能を提供します。新しく作成したコンテキストで初めて ClientView を作成する場合、手に入るのは、サーバー上で実行される EF(または RIA)クエリーとまったく同じです。結果のエンティティはクライアントにフェッチされ、クライアント上でデータ連結やプログラムからのアクセスに利用できるようになります。クライアント上で作業を続けると、つまりクライアント上でいくつかのエンティティを変更したり、さらに多くのエンティティをクエリーして取得すると、クライアントビューは、単なる EF(または RIA)クエリーにはない多彩な動作を見せ始めます。
クライアントビューを作成するための出発点は、EntityClientScope(RiaClientScope)の GetItems メソッドです。
C# |
コードのコピー
|
---|---|
ClientView<Product> products = _scope.GetItems<Product>(); |
RIA サービス(Silverlight)の場合は次のようになります。
C# |
コードのコピー
|
---|---|
ClientView<Product> products = _scope.GetItems<Product>("GetProducts");
|
(RIA サービスでは、ドメインサービスでクエリーメソッドの名前を指定する必要があります)
このように基本のクエリーを作成したら、ビューに対してフィルタ処理やページングを適用できます。フィルタ処理やページングは(キャッシュにデータが見つからない場合は)サーバー上で実行される操作なので、ClientView に対してこれらの操作を適用すると、別の ClientView が生成されます。グループ化やソートなどの LINQ 演算子もクライアントビューに対して適用できます。その結果は View になります。これは ClientView の基本クラスで、これもライブビューです。ただし、これらの演算子はサーバーを必要とせず、完全にクライアント上で実行できるため、ClientView の機能を必要としません。