0

Web サイトのページング データに LINQ を使用しています。現在、ページングを実行するために Skip() と Take() を使用しています。ここで、データが変更された場合にキャッシュが無効になるように、キャッシュの依存関係を使用してデータをキャッシュしたいと考えています。ただし、SQL Server のクエリ通知は TOP 式をサポートしていません。TOP を生成しない LINQ を使用してページ化されたデータ セットをクエリする別の方法はありますか? または、このデータをキャッシュして無効にする別の方法はありますか?

4

2 に答える 2

1

2 つのパスでデータをプルします。

// step1: get the IDs of the items in the current page.
List<int> customerIds = db.Customers
  .Where(filter)
  .OrderBy(c => c.FirstName)
  .ThenBy(c => c.CustomerID)
  .Select(c => c.CustomerID)
  .Skip(200)
  .Take(20)
  .ToList();

// step2: get the items for that page
List<Customer> customers = db.Customers
  .Where(c => customerIds.Contains(c.CustomerID))
  .ToList();
于 2010-08-25T02:41:01.687 に答える
1

結果セット全体をキャッシュし、SqlDependancy をそれに設定します。

キャッシュからセット全体を読み取り、それに対して Skip/Take を使用します。

于 2010-08-25T01:24:24.843 に答える