1

ASP.NET/SQL Server 2005 アプリケーションに「高度な検索」機能を追加したいと考えています。理想的には、テーブル駆動にしたいと思います。たとえば、検索したいテーブルに新しい列が追加されてスキーマが変更された場合、新しい列が検索可能なフィールドとして追加されたことを UI に反映させたいと考えています。検索可能なフィールド、そのタイプ、関連するルックアップなどを含むいくつかのコントロール テーブルを想像できます。

これらのテーブルは、UI を構築するときに参照できます。私の質問は、動的 SQL を作成するための最良のアプローチにあります。1 つの方法は、パラメーター化された SQL ステートメントを自分で作成することです。しかし、私は Linq に興味をそそられており、どういうわけか、System.Linq.Dynamic 名前空間 (およびLinq 式ツリー) がより洗練された堅牢なソリューションを提供するのではないかと思います。

うまくいけば、そのようなソリューションは、Linq to Sql または Linq to Entities のいずれかで機能します。このパスを調査するのは正しいでしょうか、それともこの問題空間は実際には式ツリーのユース ケースの 1 つではありませんか?

4

1 に答える 1

1

You could use expression trees, by building up a tree that does a comparison of all the fields in the schema and then passing that expression into Linq2Sql to get back out the sql you want. But why bother? It's more programming effort, the code will be harder to understand, and there’s no benefit other than a theoretical ability to swap out data providers.

(Hey Howard) - indeed - working with strings in this case is going to be a lot simpler than w/ expression trees. On the other hand, if you were going to provide a small query language to your users, then expression trees would come in handy.

于 2009-01-23T22:05:15.213 に答える