class Profile { string name; Book[] books}
class Book { string name }
2つの別々のプロファイル(AとB)は、どちらも同じ本に関連しています。
WCF/RIAを使用してSilverlightからプロファイルを1つずつロードする場合。私は同じ名前の2冊の本のオブジェクトになってしまいます。(同じ本!)。RIAに、本がすでにSilverlightに存在していることを検出し、2回目に作成するのではなく、既存のインスタンスを使用するようにします。
それらはPOCO(複雑なオブジェクト-DBにはありません)です。
名前が一意であり、Silverlight(RIAクライアント側)に同じ名前のインスタンスが2つ存在することはできないことをRIAに伝えるにはどうすればよいですか?
更新私は回避策を実装したと尋ねて以来、私はそれがエレガントな解決策だとは思っていません!しかし、ここにあります。GetProfileのコールバックメソッドは、すべてのprofile.booksをトラバースし、各ブックがローカルディクショナリにすでに存在するかどうかを確認するメソッドに置き換えられます。ブックがローカルに存在する場合、ローカルブックが使用され、2番目のインスタンスが削除されます。そうでない場合、本は辞書に追加されて使用されます。
解決策独自のブッククラスのクライアントサイドを作成してから、RIAで作成したブックを独自のブックタイプに変換します。更新されたブックをサーバーに送り返すとき、RIAブックのインスタンスを作成し、プロパティを更新する前に、後でOnDeserializing()とOnDesriallized()を呼び出します。これにより、RIA-Bookを編集できます。