5

私はEF 4.0を試しています。従業員オブジェクトがあり、EFを使用して単に呼び出すだけで従業員オブジェクトセットを取得しています

Context.Employees

上記の呼び出しは、次のSQLクエリを吐き出します select * from Employees

上記のクエリは正常に機能し、不満はありませんが、テーブルに数百万のレコードがあり、パフォーマンスに確実に影響する場合、これは十分なパフォーマンスが得られないことがわかっています。

そこで、従業員 ObjectSet からレコード 30 から 60 を取得するなどのように、ObjectSet に範囲を与える方法を見つけようとしています。

このようなことをする方法はありますか?

どんな提案でも大歓迎です。

更新: ページ インデックスに基づいて 20 人の従業員 (ページ サイズ) を取得するためにこれを実行しようとしています。

前もって感謝します。ニキ...

4

1 に答える 1

4

わかりました、私はついにこれを行う方法を見つけました。これはかなりまともだと思います。そして、これが私がしたことです。

IQueryable の Skip メソッドと Take メソッドを使用して、ページ インデックスに基づいてオブジェクトをスキップおよび取得しました。

そこで、次のコードを使用しました。

var empList = context.Employees.OrderBy("it.CreatedDate").Skip(pageIndex * 20 - 20).Take(20);

これは一つの方法です。

誰かがこれが良い解決策ではないと感じた場合は、私が置き換えることができる何か他のものを考え出すことを歓迎します.

更新されたコード Yury Tarabanko の提案に従って、コードを次のように変更しました。

var empList = context.Employees.OrderBy(x=>x.CreatedDate).Skip(pageIndex * 20 - 20).Take(20);

私の質問を読んでくれてありがとう。

Thnq、NiK...

于 2010-07-26T06:48:21.577 に答える