2011-07-10 17 views
3

WCFサービスで自己タッキングエンティティ(Entity Framework)を使用することをお勧めしますか?はいの場合は、私はそれを行う方法を指導するチュートリアルに私を導くことができますか?WCFサービスでセルフトラッキングエンティティを使用することをお勧めしますか?

実際には、MEFとMVVMを使用してPrismを使用してWPFアプリケーションを開発します。私はEntity Frameworkを使用することに決めました。このアプローチに関する提案やアドバイスが必要です。

ご協力いただければ幸いです。

答えて

7

は、WCFサービスと をお勧めしますか?

頼む人によって異なります。 MSに尋ねると、彼らは単に提供するほうが良い物がないので、はいと言います。 STEはこの非常に古いMS Connect suggestionへの応答でした。問題は、EF自体はいくつかの共通の振る舞いを共有する(時々、私を含め)MSプラットフォーム上で動作する2つのエンティティのグラフ(あなたは完全に自分自身をそれをしなければならない)と開発者の間で変更をマージするterrible bad supportを有していることである。

  • 彼らが開発する怠惰ですMS自身が提供するAPIで直接的な魔法を期待しています。
  • ほとんどの場合、新しい技術に移行する必要があるため、技術の熟練者ではありません。
  • 彼らが知っている唯一のAPIは.NET Frameworkの一部です。彼らは他のオプションを探すのではなく、機能を比較しません。

最初の2点は、RADが設計者(または新しくT4テンプレート)と同義語になるMS戦略の結果です。

I share STEについての@リチャードの意見。私はSTEsのもう一つの欠点を追加します - 彼らは参加者の間で大きなデータセットを移動します。サーバーからエンティティグラフを取得する場合は、グラフ内の単一のエンティティを変更し、データをプッシュバックすると、グラフ全体が再び転送されます。変更されたエンティティのみを転送すると、STEのコアロジックと戦うことになります。また、プロパティレベルではなく、エンティティレベルごとに完全に変更を追跡するのは怖いです。大きなバイナリデータや文字列データを持つエンティティを変更した場合、サービスとデータベース間、およびサービスとクライアント間で不要なデータがあまりにも多く転送される可能性があります。

データトラフィックが少なく、エンティティが小さい単純なアプリケーションであれば、問題なく処理できます。エンティティをサービスから取得し、WPF UIに直接バインドすると、変更内容を追跡できます。後でエンティティをサービスに戻し、変更を維持することができます。あなたのクライアントとサービスは緊密に結びついていますが、シナリオによってはそれだけで十分です。

4

私は一般的に自己トラッキングエンティティを避けるでしょう - 私はそれについてブログhere

、独自のDTOを作成し、データの転送を管理するためにそれらを使用する - そして、あなたは自己の追跡をしたい場合は、少しクリーナーアプローチがあるサービスであなたのPOCOオブジェクトをbiuoldと永続

のためのエンティティフレームワークとそれらを使用します私は(Entity Frameworkの中に)自己タッキングエンティティを使用しているかどうかを知りたいhere

関連する問題