1

DataContracts VS Entity Framework Entities オブジェクトで WCF サービスを使用することの長所と短所は何ですか?

ADO.net Self Tracking Entity Generator を使用してデータ コントラクトを生成すると、データ層のクラスが生成されます。

私のWCFサービスでそれを使用する最良の方法は何ですか? datacontract によって生成された ADO.net Self Tracking Entity Generator は、サービスを介して交換されますか、それとも WCF サービスは引き続き既定のエンティティ フレームワーク オブジェクトを使用しますか?

4

2 に答える 2

1

STE (セルフ トラッキング エンティティ) の主な利点は、変更セットの実装です。これは、Web サービスのオペレーション変更エンティティ (またはエンティティ グラフ全体) から STE を返し、別のオペレーションを呼び出して、更新された STE を処理のために Web サービスにポストすることができることを意味します。EF は、STE の変更を自動的に検出して処理します。

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

STE の欠点は、サービスとすべてのクライアント間で STE を定義するアセンブリを共有する必要があることです。STEは、相互運用可能なソリューション用ではありません。

現在、ほとんどのプロジェクトは、3 番目のタイプのエンティティであるPOCOで開発されています。また、POCO は から切り離されたときに変更を追跡することもできませんObjectContext。それがSTEの特徴です。

于 2011-02-07T18:53:30.837 に答える
0

それはあなたがしている仕事の種類によって異なります。

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

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

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

于 2011-02-07T18:50:43.473 に答える