1

次のようなデータソースがありますIDataSource : IEnumerable<IDynamicObject>

1 つの実装では純粋な XML データをクエリし、別の実装では SQL データベースをクエリしています。

私のデータソースには具象型がなく、単純なスキーマ型に対してのみ機能しています。

一部のシナリオでは、これらのデータソースは同じランタイム コンテキストでインスタンス化され、他のシナリオではネットワーク経由でアクセスされます。

LINQ を使用してデータソースをクエリすることはできませんでした。動的オブジェクトを使用して、実際のクエリの一部であるメンバー値のみを抽出および解析することを計画しています。

これは、同じランタイム コンテキストで実行している場合は問題なく動作しますが、データ ソースがリモート サーバー上の Web サービスの背後にある場合、これは失敗します。

そこで、LINQ クエリを文字列としてフォーマットし、これをサーバーに送信し、それを解析して式に戻し、新しいコンテキストで実行する方法を探していました。

私が見つけた式を解析する 2 つの方法は、Dynamic LINQFLEEでした。私はそれらを簡単に見ただけですが、式を文字列にフォーマットして解析できるものはないようでしたか?

私はRoslynプロジェクトについて読んだことがありますが、この問題に使用できるのではないかと考えていましたか? それについて詳しく知っている人はいますか?

私もいくつか見ましたIQueryable<TData>が、それについて多くの否定的なことを読んだので、多分それを避けるべきです. また、データ サーバーに具体的な型が必要ないため、強く型付けされているため、私のニーズには合いません。また、強く型付けされているため、これを Web サービスでどのように使用できるかわかりませんか? 何か不足していますか?

4

3 に答える 3

4

Roslyn は最終的に、LINQ 式を文字列形式で取得し、解析して評価する機能を提供します。ただし、現在のパブリック CTP (2011 年 10 月にリリースされたもの) は LINQ 式をサポートしていません。

于 2012-03-11T02:49:58.467 に答える
2

これは、必要なのは式ツリーをシリアル化できることのように思えますが、必ずしも C# 文字列としてではありません。

MSDNのExpression Tree Serializationサンプルはまさにそれを行います。を使用して、まさにあなたが望むことを行うサンプル WCF サービスと cient も含まれていますIQueryable<T>

于 2012-03-10T16:41:18.090 に答える
0

私は今私の答えを見つけたと思います:

WCF データ サービス!

どうしてそれを見逃すことができたでしょう!私はそれがEntity Framework専用だったのに...

于 2012-03-19T17:37:06.857 に答える