2011-07-25 12 views
0

まず、私の悪い英語のために申し訳ありません。RIA EF4複合多対多フィルタ

私はそれに似たDBの構造を有する:いくつかの特徴を持っているだけの車を選択するための最良の方法だろう何EF4.1とRIA Servicesを使用して

enter image description here

を?

クライアントでは、複数の「特性」を選択して値を通知できます。 次に、その特定の値(CarCharacteristicテーブルに "値"が保存されています)を持つ特性を持つすべての車を表示する必要があります。)「ドア」(特性))

私は、クライアント上でこれを実行したいと思いますが、それは可能ではないようです:(

サーバー上でこれをフィルタリングできるようにするには、私のようにする必要があり選択された特性の特性値とユーザに通知された値の少なくともすべてをそれぞれに送信してください。

問題は、私は任意の複合体(例えばMyClassの[])パラメータでクエリを作成する場合、私はエラーを取得することです:事前に定義されたシリアライズ可能型のいずれかでなければなりませんドメイン操作エントリの

パラメータ「X」「GetCarsByCharacteristic」

は、私はそれは一生懸命することはできませんので...

がどのようにこの種のものを行うには正しい方法だろう、私はここで何かを明らかに行方不明ですと思いますか?

答えて

0

まず第一に、あなたは、クエリのパラメータとして配列を送信したいので、そのように、あなたは、HasSideEffects=true属性でクエリをマークする必要があります:

[Query(HasSideEffects=true)] 

今あなたがすることができるかもしれません(私はまだ確認していませんが)Dictionary<Guid, int>のパラメータを使用することができます。ここでは、Idsに使用するタイプはGuidintは値です。

これで、必要に応じてIDと値でフィルタをフィルタリングできます。

編集: また、DomainDataSourceの使用については言及していないので、DomainContextオブジェクトを使用していると推測しています。この場合、次のようにフィルタリングクライアント側を追加できます。

 ctx.Load(ctx.GetMyDataQuery().Where(entity => entity.Value = value && entity.CharacteristicId = characteristicId), false); 
関連する問題