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