0

カスタム データ アクセス レイヤーを使用して、データベースからドメイン オブジェクト (顧客、注文など) を読み取ります。このデータ アクセス レイヤーは、ページングまたは並べ替えをサポートしていません。

WCF RIA サービスを使用して、データの一部 (顧客など) を Silverlight クライアントに公開したいと考えています。クライアントでは、ページングを使用してデータ グリッドを表示したいと考えています。

RIA DomainService には、次のような関数があります。

IQueryable<Customer> GetCustomers()
{
   List<Customer> customers = OurPersisteceLayer.GetAllCustomers();
   return customers.AsQueryable()
}

この関数は、データベースからすべての顧客レコードを読み取ります。このシナリオでは、RIA はいかなる形式のサーバー側ページングも実行できないと思います。関数が呼び出されると、常にすべての顧客を読み取ります。

私の質問は次のとおりです。

RIA は顧客リストをクライアントにキャッシュしますか (そして GetCustomers を 1 回だけ呼び出します)、それともユーザーがデータ グリッドの次のページに移動するたびに操作を実行しますか?

私のシナリオでは、操作の実行に 5 秒かかる場合があります。これは、1 回実行された場合は許容されますが、ユーザーがデータ グリッドの新しいページに移動するたびに 5 秒かかる場合は許容されません。

RIA を使用して従来のデータ アクセス レイヤーにアクセスし、ページングを使用する場合に使用する適切なソリューション/パターン/方法はありますか?

4

1 に答える 1

0

クライアント側でページングにDomainDataSourceを使用していると仮定します。基本的には、IQueryableを呼び出すだけSkipですTake。ですから、私の勘は、へGetCustomersの呼び出しごとに常にすべての顧客を獲得しているため、ページ操作ごとに毎回すべての顧客を獲得できるようになるということです。DDSは、LINQクエリへの呼び出しを想定してSkipおりTake、LINQクエリに組み込まれ、最終的にはデータソース自体で作成されます。

于 2010-08-18T21:18:39.667 に答える