0

従来のEntityFramework4プロジェクト(POCOではありません)。

デフォルトでは、すべてのプリミティブおよびナビゲーションエンティティのプロパティはDataMemberAttributeでマークされています。

1つのエンティティナビゲーションプロパティをIgnoreDataMemberAttributeでマークしたいと思います。目的は、WCFでDataContractSerializerを使用するときに、コレクションに関連するエンティティが多数ある場合に、Webサービスで非常に大きなシリアル化されたオブジェクトを生成しないようにすることです。プロパティのアクセシビリティは重要ではないようです。

edmxファイルでの構造注釈の使用に関するいくつかのドキュメントをここここで見ました。これは、この目的に適しているように思われます。

構造アノテーションを使用して、edmxファイルのCSDLでIgnoreDataMemberAttributeを使用してエンティティプロパティをマークすることは可能ですか?

もしそうなら、誰かが例を提供できますか?

ありがとう!

4

1 に答える 1

0

これは、カスタム T4 テンプレートを使用することで可能になるようですが、この方法ではすべての Navigation プロパティの属性が削除されます。

手順は次のとおりです。

EDM デザイナー画面を右クリックし、[コード生成項目の追加] を選択します。

  • ADO.NET EntityObject Generator を選択し、作成する T4 テンプレート tt ファイルの名前を指定します。

  • ソリューション エクスプローラー ウィンドウで EDMX ファイルをクリックし、プロパティ ペインで [カスタム ツール] プロパティをクリアします。

  • ソリューション エクスプローラー ウィンドウで TT ファイルをクリックし、プロパティ ペインでカスタム ツールの名前空間を指定します (該当する場合)。

  • TT ファイルを編集して、ナビゲーション プロパティ セクションから [DataMemberAttribute] を削除します。

詳しくは:

https://blogs.msdn.com/b/efdesign/archive/2009/01/22/customizing-entity-classes-with-t4.aspx

http://www.smartsoftwarebits.com/qaa/46-misc/107-how-to-prevent-entity-framework-navigation-property-from-being-exposed-through-wcf-service

于 2012-07-28T15:41:08.987 に答える