2010-12-28 9 views
0

私は、基本従業員オブジェクトと関連メッセージオブジェクトのセットからなるオブジェクトグラフを持っています。WCFデータサービス - 基準に基づいて返された関連オブジェクトの制限

従業員のプロパティ(チームなど)の検索条件に基づいて従業員のオブジェクトを返すことができます。ただし、メッセージを拡大するとメッセージの完全なコレクションが返されます。私は上位n個のメッセージを取ることができるようにしたい(すなわち最近の10個に制限する)、メッセージオブジェクトの日付範囲を理想的に使用して、戻されるメッセージの数を制限することができます。

これまでのところ、私はこれを行う方法を把握することができていない: 私はエラーを取得する私は(メッセージのプロパティに基づいてフィルタリングする& $フィルターをしようとした場合=従業員/メッセージ/開始日「はエラーになります> 「開始日が」)タイプ「System.Data.Objects.DataClasses.EntityCollection`1に存在するプロパティいいえ。

メッセージ関連オブジェクトにトップを使用しようとすると、いずれかの動作しません。

私も使って試してみました従業員IDの文字列リストを取るWebGet拡張。リストが長すぎるまで動作し、URLが長すぎるために失敗する(ページング機構をセットアップすることが可能かもしれない...

私が使用しているUIコントロールでは、データがかなり特定の階層的な形状になっている必要があるため、メッセージ側から開始して逆方向に作業することは簡単にはできません。

wcfデータサービスでこれを達成する方法を知っている人はいませんか?

ありがとうございます! M.

答えて

0

これを実行する唯一の実際の方法のように見えるのは、実際にはクエリの方向を逆転させることです。

従業員から始めるのではなく、私はメッセージ側から行く。従業員のプロパティを元に戻し、Messagesコレクションを制限することができます。それは理想的ではありません。私がやろうとしていることを従業員に再センタリングしてもらうためにコレクションを反復することを意味しますが、機能します。 Silverlightとリッチクライアントの非同期性は、少なくとも余分な繰り返しが必要であることを意味しますが、まだまだ合理的です。

odata/wcfデータサービスの現在のバージョンでは、継承されたクラスのプロパティの照会がサポートされていないため、開始/終了日のプロパティをベースクラスまで移動しなければならない彼らに私の検索を制限する。

http://Site/Service.svc/Messages()?& $フィルター=会社員/ OfficeName EQ 'トロント' と(年(開始日)EQ 2010年と月(開始日)GE 9)

関連する問題