2012-02-10 16 views
1

私は、ユーザが各パラメータで複数の値を持つ複数のパラメータを選択できる機能を開発中です。私は、ストアドプロシージャにマッピングされているエンティティを持つC#、エンティティフレームワークを使用して、アプリケーションでこの機能を設計する方法を理解しようとしています。セキュリティ上の理由から、私のアプリケーションは、ストアドプロシージャだけを持つ代理データベースを介してデータベースにアクセスする必要があります。したがって、私のエンティティは、挿入、更新、および選択のためのストアドプロシージャにマップされます。 最終的には、データベースを照会するために、ユーザーが選択したフィルターをストアード・プロシージャーに渡す必要があります。私が考えていたソリューションの1つは、すべてのデータをビジネスレイヤーに取得し、linqを使用してさらにフィルタリングすることでした。しかし、これは理想的ではない。なぜなら、この種の複雑な照会を行うのにより適しているのは、データベースよりもメモリレーターでフィルターされるデータの量である。 私はlinqを使って動的なクエリを構築するための記事を見ましたが、これらの種類の投稿では、エンティティがテーブルにマップされているため、読みやすくなりました。 ここにお手伝いいただければ幸いです。 ありがとう、 sirkalC#+ Entity Framework +ストアドプロシージャを使用した動的クエリの作成

答えて

0

EF(とLINQはその点で)遅延実行を使用します。 IQueryable(Googleの検索時間?)を使用し、作成するオブジェクトにフィルタ条件を作成することで、動的クエリを簡単に作成できます(オブジェクトなしで実行できますが、再利用可能と考える)。

SQL sprocに関しては、フィルタを変更する可能性のあるすべての項目を渡して、SQLでデータを動的に処理して結果セットを生成することによっても解決できます。

お選びくださいそれは本当にあなたのグループのコアコンピテンシーがどこにあるかによって異なります。私はC#コードのほうが親しみやすい(sprocsをやっている年を費やしたが、ダイナミックなsprocsは王の痛みになる)ことが多いからだ。

あなたが気にしたいことの1つは、(SQL Serverの統計のような、他のRDBMSでも同様の概念が使用されていますが)サーバーによって簡単に調整できない動的なクエリで終わることです。たとえば、LINQ to SQLで見た1つの問題は、SQLのパフォーマンスを最適化することができない動的クエリーであり、DBAから多くの手持ちを要求しています。

関連する問題