0

私は現在、独自のオーダーメイドのクエリ言語 (つまり、select/where/orderby のようなステートメント) を備えた ORM を使用する CMS を使用しています。私はこのミニ言語を DSL と呼んでいますが、用語が間違っている可能性があります。

この CMS のコントロールを作成していますが、この CMS を長期的に継続するかどうかについては疑問があるため、コントロールを CMS に結合したくないと考えています。

独自の DAL/抽象化レイヤーなどを使用することで、コントロールを CMS からかなり簡単に切り離すことができます。

次に、ほとんどの CMS コントロールで、ユーザーがクエリを入力してデータ ソースに入力される内容を制御できるプロパティ (設計時に編集可能) が提供されていることを思い出しました。素晴らしい機能 - 問題は、この機能をどのように抽象化できるかということです。

そのとき、実行時に LINQ 式に変換できる単純なクエリ言語を提供できる DSL フレームワークがそこに存在するのではないかと思いました。したがって、CMS のクエリ DSL から私を切り離します。

そのようなものは存在しますか?私は時間を無駄にしていますか?(おそらく後者)

ありがとう

4

1 に答える 1

1

これはあなたの質問に完全に答えるつもりはありませんが、LINQ クエリの述語をDynamic LINQと呼ばれる文字列として指定できるようにする LINQ の拡張機能があるため、条件を文字列ベースの形式で保存する場合は、おそらくこれの上にあなたの言語を構築してください。さまざまな句 (where/orderby/など) を表す方法を見つける必要がありますが、これらに引数として渡される述語については、Dynamic LINQ を使用できます。

Dynamic LINQ を使用すると文字列を解析できますが、AFAIK には既存の式ツリーをその文字列に変換する方法がないことに注意してください...そのためにはいくつかの作業が必要になります。

(しかし、私は質問を完全に理解しているかどうかわからないので、多分私は完全に:-))

于 2009-02-25T19:55:32.857 に答える