昨年、Entity Framework (もちろん .NET3.5) を使用し、Julie Lerhman の本をガイドとして使用して、プロジェクトのデータ アクセス サービスを開発しました。状態追跡 POCO オブジェクトを開発しました。WCF を使用し、Silverlight 3 クライアントもあります。私たちは .NET 4.0 に移行しており、コード生成の使用に切り替えて、POCO クラスと翻訳クラスを作成する開発者の無駄な時間をなくしたいと考えています。
私が行った調査では、POCO を追跡する状態には 3 つの方法があるようです。
1) 追跡されたプロキシの変更: これは WCF シリアル化では機能しないように見えるため、役に立たないようです。
2) スナップショット ベース: POCO エンティティ グラフが取得されたときにスナップショットが取得され、クライアントから返されたグラフがそのスナップショットと比較され、差異が比較されます...私には良いようです。
3) 自己追跡エンティティ: コード ジェネレーターは、POCO オブジェクト内で自己追跡を行うためのロジックを生成します。これは、すべてが私たちのために生成されていることを除けば、現在私たちが行っていることに近いようです。
これらすべての方法の長所と短所を理解しようとしています。1 と 2 は「接続」されており、インスタンス化されたままにするために POCO が最初に照会された ObjectContext が必要であると推測していますが、これを確認することはできませんでした。また、オプション 3 が同じかそれ以上のことを行うように見えることを考えると、誰もがオプション 1 を実際に気にする理由もわかりません...
スナップショットは私にとって最も単純なように思えますが、これが ObjectContext を長時間開いたままにする必要があるかどうかはわかりません...
私はジュニア プログラマーに過ぎないので、特に Silverlight 3 に関して (オプション 2 と 3 は Silverlight 3 で動作すると思いますが、オプション 2 には問題がある可能性があります)、ここでのアドバイスは大歓迎です。