わかりました、これは少し「非正統的」に聞こえるかもしれませんが、VS2010 と Entity Framework の新しい POCO t4 テンプレート (ウォークスルー: Entity Framework の POCO テンプレート) を使用すると、素敵な POCO を生成できます。次に、これらの POCO を (DTO として) WCF サービスで使用し、本質的に EDM からクライアントに至るまでのすべての方法を使用できます。すべてが自動的に生成されることを除いて、この人が何をしているのか(EF 4.0およびWCF 4.0を使用したPOCO )。エンティティと DTO は「異なる必要がある」ことは理解していますが、この場合、クライアントとサーバーを処理しているため、DTO をモデルに含めて自動的に生成することにはいくつかの利点があります。
私の問題は、関係を持つエンティティを転送すると、クライアントが生成したコレクション (ICollection) に読み取り専用の値が設定されているため、その関係を操作できないことです。たとえば、既存の Order を取得すると、製品をクライアント側の Products コレクションに追加できません。Products コレクションは読み取り専用です。
私は、何十回ものサーバー ラウンド トリップ (AddProductToOrder(product) など) を行うよりも、クライアント側で一連の「注文編集」を行い、更新された注文を返送することを好みます。また、Entity と DTO の間で大量のサンクが発生しないようにしたいと考えています。全体として、これは私には良さそうです...読み取り専用部分を除いて。
解決策はありますか?それとも、これは SOA グレインに反しすぎていますか?