2011-02-07 9 views
1

DataContracts VS Entity FrameworkエンティティオブジェクトでWCFサービスを使用する場合の長所と短所は何ですか?DataContractsを使用したWCFサービスVS既定のエンティティフレームワークエンティティオブジェクト

私はADO.netセルフトラッキングエンティティジェネレータを使用してデータ契約を生成する場合、自分のデータレイヤーのクラスを使用します。

私のWCFサービスでどのように使用するのが最適でしょうか? ジェネレーションされたADO.netデータトラッキングエンティティジェネレータは、サービスを介して拡張されるか、WCFサービスは引き続きデフォルトのEntityフレームワークオブジェクトを使用しますか?

答えて

1

STE(自己追跡エンティティ)の主な利点は、変更セットの実装です。つまり、Webサービスの操作変更エンティティ(またはエンティティグラフ全体)からSTEを返し、処理のために更新されたSTEをWebサービスにポストする別の操作を呼び出すことができます。 EFは自動的にSTEの変更を検出し、処理します。

エンティティがObjectContextにアタッチされていても、エンティティがWebサービス操作から返されたときにエンティティがデタッチされている場合にのみ、変更を追跡できるため、これは不可能です。

STEの欠点は、サービスとすべてのクライアントの間でそれらを定義するアセンブリを共有する必要があることです。 STEs are not for interoperableソリューション。

現在のところ、ほとんどのプロジェクトは、第3の種類のエンティティ(POCOs)で開発されています。 POCOは、ObjectContextから切り離されたときの変更を追跡することもできません。これはSTEの特徴です。

+0

私はPOCO'Aを掘り起こす必要があるように見えます –

0

あなたの仕事の種類によって異なります。

データコントラクトを構成し、EFモデルとは別のDTO(データ転送オブジェクト)を使用すると、シリアル化されるものとは異なるものをより詳細に制御できます。これは、複数のクライアントとの互換性とバージョン管理に重要です。 EFを使用して

http://martinfowler.com/eaaCatalog/dataTransferObject.html

POCOとフォームの最後の生成されるデフォルトのデータベースと制御と分離の観点から、おそらく次のです。ただし、これらの2つはSilverlightクライアントで使用すると使いやすく、柔軟性があります。

+0

ありがとうJtew私はPOCOを調べ、それが私のために働くかどうかを見ます。 –

関連する問題