7

私は EntityFramework を使用して多くの WCF の例を見てきましたが、それらのほとんどは、ある種の POCO または DTO クラスをクライアントに返すようです。

EntityObjectデフォルトには[DataContract]属性と実装が含まれているため、これがなぜなのか疑問に思っていましたINotifyPropertyChanged。DTOまたはPOCOクラスを返すことはEntityObject(またはその逆)よりも優れていますか? また、ある戻り値を別の戻り値よりも使用する方が良い特定のインスタンスはありますか?

4

2 に答える 2

8

ベストプラクティスとして、データコントラクトとして明示的に設計され、永続ロジックを持たないDTO/POCOクラスを返すようにする必要があります。

その理由は、EntityObjectを渡す場合、サービスのコンシューマーが同じデータコンテキストへの参照を持っていると想定しているためです。これは、明示的な境界のSOAテネットに違反します。それはあなたのサービスの再利用性を減らします。

MicrosoftがEntityObjectにDataContractを実装して、RIAなどのWCFベースのデータベースアクセスツールの一部をサポートしている可能性があります。INotifyPropertyChangedは、WPFバインディングをサポートするためのものであり、WCFまたはデータコントラクトとは関係ありません。

于 2011-01-28T02:01:06.403 に答える
0

永続化ロジックを認識していない場合には、POCO を返す価値があります。つまり、同じ POCO を他の ORM に接続したり、他の目的で接続したりできます。これは ORM に対する POCO の利点ですが、プロキシ/通知実行時間を追加する EntityObject よりもパフォーマンスが向上します。

POCO を返す - WCF から受信したエンティティの状態を手動で更新する必要があります。

Returning EntityObject - 維持された状態のエンティティを受け取ります。

于 2011-01-28T05:43:38.057 に答える