0

ここ数日、答えを探していましたが、答えが得られなかったので、ここに書くことにしました.

問題は次のとおりです。モデルがデータ サービス プロバイダー (この場合はリフレクション プロバイダー) によって作成されるデータ サービスがあります。ものすごく単純。ただし、クエリ インターセプターを使用してデータをフィルター処理するのではなく、クエリ インターセプターを使用してデータ モデルを作成したいと考えています。

達成したいこと: /service.svc/search?fromDate=x&toDate=y

検索データと検索結果のモデルである search というモデルがあります。リフレクション プロバイダーは fromDate と toDate の 2 つのパラメーターを取得し、それらを変数として保存してから、ストアド SQL プロシージャにパラメーターとしてスローします。検索結果はモデルに保存されます。

これを説明するのは難しいと思います。これは、クエリ インターセプターとリフレクション プロバイダーで行う通常の処理ではないためです。

通常、クエリ インターセプターは、モデルの一部を除外するために使用され、完成したデータ モデルに適用されます。

これを達成する方法を知っている人はいますか?

クエリインターセプターをパラメーター化する方法は知っています-http: //ashwini47-tts.blogspot.in/2012/03/how-to-parametrized-queryinterceptor-in.html-しかし、パラメーターをdbcontextに送信する方法がわかりません/オブジェクトコンテキスト。

4

1 に答える 1

0

クエリインターセプターは、この問題を解決するためのものではありません。2つのオプションがあります。

1)2つのパラメーターを受け取り、一連の結果を返すサービス操作。実装は非常に簡単ですが、「すべての」結果のセットを公開する必要もあります。それがあなたにとって可能かどうかわからない。考えられる回避策はありますが、それらはやや複雑であり、以下の#2よりも複雑になります。

2)クエリをODataクエリとして記述します。したがって、〜/ searchResults?$ filter =dategtおよびdateltのようなものです。次に、searchResults IQueryableプロパティから、フィルターを含む式ツリーを処理し、from値とto値を抽出し、ストアドプロシージャを実行してクエリを評価するカスタムIQueryable実装を返します。これは間違いなくより多くの作業ですが、これはODataのクエリ方法であり、#1のサービス操作はスペースに適合しません。

于 2012-10-03T22:34:05.043 に答える