ここにあるカスタム データ プロバイダーに対抗するために、一般的な OData プロバイダーに取り組んでいます。これは、データ プロバイダーが認識しているテーブルをデータ プロバイダーに照会するという点で、完全に動的です。ここまでで、OData サンプル コードに基づいて、基本的なストレージ構造を配置しました。
私の問題は次のとおりです。OData はクエリをサポートしており、IQueryable 実装を渡すことを期待しています。下側では、クエリのサポートはありません。冗談ではありません。プロバイダーはテーブルを返し、WHERE 句はサポートされていません。ここではパフォーマンスは問題になりません。テーブルは小さいです。OData プロバイダーで並べ替えても問題ありません。
私の主な問題はこれです。
- テーブルのデータを取得する SQL ステートメントを送信します。その結果が、ある種の ADO.NET データ リーダーです。
- 後でフィルタリングできるようにするには、このデータの IQueryable 実装を公開する必要があります。
それに最もよく触れる方法はありますか?.NET 3.5 のみ (当面は 4.0 の予定はありません)。標準のLINQを使用できるように、すべてのテーブル(バイトコードを発行する)に動的DTOクラスを作成することを真剣に考えていました。現在、エントリごとに辞書を使用しています (あまり効率的ではありません) が、それらに基づいてフィルター処理/並べ替えを行う実際の方法がわかりません。