質問

プレゼンテーションモデルを取得しようとしています(議論されています ここここ)RIAで働いています。私が見つけることができるすべての例は、1人の多くの関係や多くの関係のないシンプルでフラットデータエンティティです。これは、私が機能することができないものです。特に、連想関係への更新と挿入について。

クエリは正常に動作することができます - プレゼンテーションクラスはアソシエーション属性(および必要に応じて属性を含む)でマークアップされており、データがクライアント側にロードされ、エンティティとして維持される方法についてよく理解しています。また、カバーされている新しいエンティティの挿入もあります。しかし、私は次の問題を経験しています。次の例では、シンプルなアルバムとアーティストのエンティティがあると仮定します。アルバムには1人のアーティストがあり、アーティストには多くのアルバムがあります。どちらも名前のプロパティを持っています。

  • クライアント側では、myartist.albums.add(analbum)またはmyartist.albums.remove(analbum)を行うと、何も起こりません。 HasChangesはFalseを返します。 (MyArtistとAnalbumは、エンティティを読み込み、特定のエンティティへの参照を取得するためにコードのみで取得されたことに注意してください。UIやDomainDataSourcesではまだ何もしていません。
  • アーティストとサブミッチングで名前を更新すると、更新メソッドがサーバーで呼び出されると、アルバムコレクションはnullです。

誰かが何か提案はありますか、それとも、より複雑なオブジェクトを使用する例を教えてもらえますか?

編集 (後世のために上記を維持する):申し分なく、2番目の問題(エンティティへの参照または更新がサーバーで呼び出されたときにnullとして表示されるエンティティのコレクション)は、子供が変更されたとマークされていないために存在し、そのため、彼らはシリアル化されておらず、送り返されません。 [構成]を使用してそれを強制することができることは知っていますが、私はそれをそのように機能させましたが、これは構成関係ではなく、両方のエンティティが「トップレベル」エンティティになることを望んでいます。エンティティを変更したとマークするにはどうすればよいですか?

役に立ちましたか?

解決

問題は、私の[協会]属性が正しく定義されていないことでした。私は、協会の名前のプロパティが協会の両側で同じでなければならないことに気づきませんでした。名前が同じでビルドを実行する場合、クライアントの生成コードは、「親」が使用するエンティティコレクションに異なるコンストラクターを使用して、関連付けが正しく設定されていない場合よりも「子供」を参照するために「子供」を参照します。 。新しいコンストラクターは、コレクションを追加して削除するときに電話をかけて削除するときに少し余分な取り扱いを行うコールバックを取ります - 具体的には、すべてが残るように親を指すプロパティを追加または削除および修正する子のエンティティを取得します同期:オブジェクトを削除したコレクション、追加したコレクション、およびその親へのオブジェクトの参照。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top