RIA で動作するプレゼンテーション モデル (こことここで説明) を取得しようとしています。私が見つけることができるすべての例は、1対多または多対多の関係を持たない単純でフラットなデータエンティティです。これは、具体的には、連想関係への更新と挿入では機能しません。
正常に動作するクエリ - プレゼンテーション クラスを Association 属性 (および必要に応じて Include 属性) でマークアップしており、データがクライアント側にどのように読み込まれ、そこでエンティティとして保持されるかについて十分に理解しています。また、カバーされた新しいエンティティの挿入もあります。ただし、次の問題が発生しています。次の例では、単純な Album エンティティと Artist エンティティがあると仮定します。ここで、Album には 1 人のアーティストが含まれ、Artist にはゼロから多数のアルバムが含まれる場合があります。どちらにも Name プロパティがあります。
- クライアント側では、myArtist.Albums.Add(anAlbum) または myArtist.Albums.Remove(anAlbum) を実行しても何も起こりません。HasChanges は false を返します。( myArtist と anAlbum は、エンティティをロードし、特定のエンティティへの参照を取得するために反復することによって、コードでのみ取得されたことに注意してください: UI や DomainDataSources ではまだ何もしていません。
- アーティストと SubmitChanges で Name を更新すると、Update メソッドがサーバーで呼び出されると、Albums コレクションが null になります。
誰か提案がありますか、またはより複雑なオブジェクトを使用する例を教えてもらえますか?
EDIT(後世のために上記を保持):子エンティティが変更済みとしてマークされていないため、2番目の問題(Updateがサーバーで呼び出されたときにnullとして表示されるエンティティまたはエンティティのコレクションへの参照)が存在するようですそのため、シリアル化されて送り返されていません。[Composition] を使用してそれを強制できることは知っていますが、そのように動作するようになりましたが、これは合成関係ではなく、両方のエンティティを「トップレベル」エンティティにしたいと考えています。エンティティを変更済みとしてマークするにはどうすればよいですか?