2011-08-08 5 views
0

私は、Entity Framework 4.0と組み合わせてWCF RIA Servicesを使用しています。IncludeAttributeはObjectQueryおよびDbSetインクルードメソッドよりも任意の値を追加しますか?

関連するオブジェクトがクライアントに安全に送信されるようにするには、DomainServiceの中にObjectQuery(Of T).IncludeまたはDbSet(Of TResult).Includeのメソッドを使用する必要があります。また、メタデータクラス内のナビゲーションプロパティにIncludeAttributeを追加する必要があります。

私は、関連するオブジェクトがクライアントに転送され、ビット冗長思われ、それを実装するためにの変更を行うことを余儀なくしています持っている単一決定を下します。

すべてのナビゲーションプロパティがIncludeAttributeで自動的に装飾されるように、T4テンプレートの変更を検討しています。

私は、意図せずクライアントに送信されていた以前のリクエストから残ったエンティティについて少し気になりましたが、私の理解は、DomainServiceがステートレスなので、これは当てはまりません。

「のDomainService」名前のポイントは、それが私の アプリケーションの特徴である特定のドメインを表しstateless オブジェクトであるということです。

Another approach私が見たのは、プロジェクト内の任意のメタデータファイルにInclude属性を自動的に適用することでした。私はまだメタデータファイルを作成する必要があります。

私が見ていない他の危険はありますか?同じ効果を達成するより良い方法はありますか?

答えて

0

私はIncludeAttributeを自動的に適用するようにEDMX T4テンプレートを変更しましたが、期待どおりに動作しています。

私が途中で特定した属性を手動で適用する利点の1つは、クライアントで生成されるコードの量を制御できることです。サーバー上でのみ使用されるエンティティは除外できます。

これは私の問題ではありませんでした。

2

This threadは、その背後にある根拠を理解するのを助けました。それが役に立てば幸い。

+0

全く同じ質問がOPにあるようです。私は答えがポイントを少し欠いていたと思う。ステートレスサービスで、遅延読み込みがない場合、属性の値はどのような値になりますか? –

+1

EFの場合、それは多くを追加しません。二重決定は、ストアされたプロシージャのようなものからデータを制約し、そうでなければあなたのサービスから露出させたい情報よりも多くの情報を返すことを可能にする可能性があります。 –

1

この場合、潜在的な問題空間を特定したと思います。 IncludeAttributesをデフォルトにすると、サービスはメモリにまとめたオブジェクトグラフを返します。

このソリューションを実装する最適な方法は、メタデータファイルを最新の状態に保たずに、正しいプロパティタイプのIncludeAttributeを推測するカスタムDomainServiceDescriptionProvider(here's a decent sample)を作成することです。

+0

私は上記のサンプルを見つけることができませんでした。詳細を教えてください。 –

関連する問題