2009-07-19 22 views
1

SQLのデータイテレータを作成しようとしていますが、この問題のために動的SQLを調理するのが最善の方法です。SQL Server 2005/2008の再利用可能なデータイテレータを書く

イテレータがデータのページング、並べ替え、フィルタリングをサポートし、理想的にはメモリコピーを反復せず、最初にデータを選択しないようにしたいと考えています。LINQ to SQLまたはEntity Frameworkは、同様?

面白いのは、SqlCeResultSetをサポートするすべてのデータベースと、これを非常に簡単にするExecuteResultSetのコンセプトをサポートするすべてのデータベースのSQLCEのための素敵なデータイテレータを既に書いていますが、これはフル機能のサーバーデータベース製品にはまだありません。なぜこれが組み込みDBのように基本的に単一のユーザーモードでロックできるのか、そして言語サポートが減少していることが容易に想像できます。

おそらく私はあまりにも疲れている、またはこれを行うための受け入れやすい方法を理解するのに十分な教育を受けていないかもしれません。私はSQLデータリーダーを行うことはチケットかもしれないと思うが、私が間違っていないとすれば、反復する間に接続を開いたままにする必要があり、それはあまり意味がないように思われる、他のアプローチはデータのページを選択することであるそのコレクションのイテレータを提供すると、次のページをプルダウンすると、これは機能しますが、並べ替え、フィルタリング、ページングをサポートするために多くのSQL構造を調理しなければならないことを意味しますが、溶液。ここで

おかげ

+0

あなたは文脈を与えるべきです。それは重要です。 ASP.NETまたはWinForms、wtcイテレータのサポート対象を明確にしていません。 –

+0

単にデータを表示する方法であるwinformsまたはasp.netの場合、データ層からデータのサブセットを返すことが望ましい限り、コンテキストは何を意味しますか。私はちょうどsqlレイヤーで動作するイテレーターが必要なので、自分自身のt-sqlを生成するか、ツールを使用して自動生成し、sqlはページング、フィルター、およびデータのソートをサポートする必要があります。非同期通信をサポートし、そのデータをページングしている間にアクティブな接続を維持する必要はありません。 – Enigmae

+0

ページング、並べ替え、およびフィルタリングはすべてUIによって開始されたものです。ここではUI技術の性質が重要です。 –

答えて

0

私はシラーズに同意する - サーバー側のページングを実行するためにLINQを使用して移動するための方法です。まったく同じロジックを使用して、SQLのサーバーサイドページネーションを実行できるように、(IEnumerableを実装する)オブジェクトのコレクションをページすることができます。

例はStackOverflow hereです。

関連する問題