1

ページングなしでグリッドビューに巨大なデータを表示したいのですが、「さらに読み込む」オプションを提供して、次のページを取得し、前のページを保持します。

EF または ADO.Net コンポーネントを使用してこの機能を実装する方法は?

.SkipeL2SQL または EFのメソッドは、ロード要求.Takeごとにクエリを再実行するため、役に立たないと思います。しかし、私が実装したいのは、データベースで何が起こっているか (レコードの追加/削除) に関係なく、結果を保存するオープン DataReader に似たものです。DataReader の唯一の問題は、開いたままにしないことです。

標準的な方法は何ですか?

4

2 に答える 2

1

通常のページングでもクエリが再実行されるため、それは問題ではないと思います。

あなたの唯一の2つの選択肢は、何らかのページングを行うことです(実際のページングにはパフォーマンス上の利点があるかもしれませんが、スキップ/テイクはそれの優れた実装です)

また

すべてをデータテーブルなどに保存します。このようにページングしてもパフォーマンス上の利点は得られませんが、ユーザーが一度にいくつかのレコードのみをロードできるようになるため、使い勝手が向上する可能性があります。

于 2012-06-11T14:05:21.697 に答える
1

標準的な方法は、Skip/Take を使用して、読み込まれたセグメントごとにクエリを再実行することです。このソリューションは簡単で、さらに重要なことに、ステートレスです。現在の HTTP 要求の実行にかかる時間よりも長く、開いている接続/コマンド/クエリを保持したくないことは確かです。アプリがステートフルで脆弱になるため、これはアンチ パターンです。

クエリのコストが非常に高い場合は、最初の 5 ページ程度をその目的のために作成された新しいテーブルに格納して、すばやく取得できるようにすることを検討してください。

于 2012-06-11T13:55:32.353 に答える