2011-08-03 29 views
2

Entity Frameworkを使用してWCFデータサービスプロジェクトを作成しようとしています。 (私は両方に新しいです)。Entity Frameworkを使用したwcfデータサービス

DBを使用してエンティティを作成しました。 ここでは、IQueryable<entity>を返すサービス操作を作成しました。

私の問題は、私は、エンティティの列のセット全体を返すようにしたくない

  1. です。私はそれがヌルではないので、エンティティから削除することはできません。これらを避けるには?

  2. 私はFKカラムが少なく、テーブルの他のカラムの詳細が必要です。他のテーブルの列を含めるにはどうすればよいですか?

  3. WCFデータサービスから返されるPOCOクラスを使用できないのはなぜですか?

  4. どのようにレスポンスをフォーマットしますか。つまり、ページ番号などのようなレスポンスにいくつかの詳細を追加し、xmlタグを変更し、「リンクrel」のような詳細を削除しますか?

私は1と2を達成するために多くのことを試しました。しかし、最終的には、それが機能するようにエンティティを使用することができます。

私は約4を知りません。

お勧めできます。

答えて

1

1.エンティティの列全体を返す必要はありません。
2. FK列が少なく、 テーブルの他の列の詳細が必要です。

このためには、クライアントが必要とするものと一致する新しいクラスを定義する必要があります。それはまっすぐなPOCOクラスになることができます - 特別な要件はありません。そのクラスを各エンティティごとにアセンブルし、不要な列を残して、FK列の余分なフィールドまたは2つを新しいクラスに取り込みます。エンティティクラスの代わりにIQueryable<YourNewClass>を直接返します。

新しいクラスのプロパティを埋めるために巨大な左右の代入文を避けるには、AutoMapperを見てください。そうすれば、互いに非常に似ているクラスをコピーするのが本当に簡単になります。いくつかのプロパティを追加します)。

4.応答をフォーマットするにはどうすればよいですか。つまり、ページ番号などの レスポンスに詳細を追加してください。xmlタグを変更し、詳細をほとんど削除しないでください。 は「リンクrel」のようなものですか?ことはできません

- のODataプロトコルは非常に厳しく、あなたがそれと一緒に暮らすことができない場合などがあるリンク何か、メッセージにあるように何が起こっているかを定義 - あなたはあなた自身のWCF RESTをロールバックする必要がありますWCFデータサービスのすべてを削除します。

このルートをより詳細に調査する場合は、WCF REST Developer Center on MSDNをご覧ください。

更新:そのリンクは死んでいるようです - 代わりにWCF Web Http Programming Overviewを試してください。

+0

を整理私にとって[Key]または[DataServiceKey("Your_Custom_ID_Property")] のいずれかを指定し、私は、サーバーが遭遇した「私はエラーを取得しています、あなたはポイント1と2のために提案何やっているあなたがId性質を持っているかを確認してください例外のメッセージは、 'データコンテキスト型' GamesContext 'には、要素型がエンティティ型ではない、IQueryableプロパティ' Games 'の上位があります。IQueryableプロパティがエンティティ型であることを確認するか、IgnoreProperties 「このプロパティを無視するデータコンテキスト型の属性」。詳細については、サーバーログを参照してください。例外スタックトレースは次のとおりです。http://msdn.microsoft.com/en-us/gg601461 – genericuser

+0

@ Priya10: [いくつかの回避策がある既知の問題]であるようです(http://samuelmueller.com/2009/11/working-with-projections-and-dtos-in-wcf-data-services/) ! –

+0

@marc_sそのリンクは死んでいるようですが、私はそのエラーを受け取ります – Maslow

関連する問題