2012-03-02 7 views
0

私のアプリケーションのグリッドをフィルタリングするロジックをのロジックにリファクタリングしたいと考えています。私はこの論理をデータベースに実装したいと思います。フィルタのロジックを整理する最良の方法はどれですか

私は、DBのより多くのテーブルのデータを表示するグリッドを持っています。 textBoxescomboBoxesがあり、必要な各フィルターのデータを設定します。

さて、それはこのように動作するデータベース内巨大なストアドプロシージャです:たフィールドに従って、

は当初、一時テーブルにテーブルからのその後 を[ALL DATA]を選択 (アプリケーションフィルタからの)データで埋め、それは[ALL DATA]ので、foreachのパラメータにSであるFILTERに

を選択し、好きではないでその情報から削除されますフィルタ内の

この方法では、最初はすべてのデータを選択してから、必要のないデータをゆっくりと削除するため、多くの時間を消費します。

私はクライアント側でSQLクエリを作成したくありません。私はそれをデータベースだけにしたいと思っています。あるいは、私は知らないのです...

これは、最適な方法であり、非常に最適化されており、短時間で高速に実行して結果を返しますできるだけ?

クライアント側にはC#と.NET 4.0、MSSQL DBは使用します。

ありがとうございました。

+0

私は、ORM、SQLカーソル、.NET Reflectionの使用について、選択されたフィルタオプションに従って動的SQLクエリを作成しました。どちらが最善の方法でしょうか? – meorfi

答えて

1

すべてを選択して不要なものを削除するのではなく、最初にテンポラリーテーブルに必要なデータのみを選択するようにストアドプロシージャを修正します。

1

それはORMのためのものです。クライアント側で動的SQL文を作成しないでください。むしろ、LINQクエリフィルタをフィルタで構築します。 SQLインジェクションのリスクなしに、完全に動的なメリットを得ることができます。

例としてthisを見ることができます。

+1

男に例を挙げてください。 – linkerro

+1

OK、OK、例にリンクを追加します。 – zmbq

+0

ORMはクライアントとサーバー間の仲介者であるため、直接接続よりも動作が遅くなるか、効率的に動作するように作られていますか? – meorfi

関連する問題