Frage

Ich versuche ein Präsentationsmodell zu bekommen (besprochen hier und hier) Arbeiten in RIA. Alle Beispiele, die ich finden kann, sind einfache, flache Dateneinheiten mit No-1-Viele oder vielen Beziehungen. Dies ist das, was ich nicht zum Arbeiten kann-insbesondere bei Aktualisierungen und Einfügen in assoziative Beziehungen.

Abfragen, die ich einwandfrei machen kann - ich habe meine Präsentationskurse mit Assoziationsattributen (und gegebenenfalls Attribute einbeziehen) und ich habe ein gutes Verständnis dafür, wie Daten in die Clientseite geladen und dort als Entitäten gepflegt werden. Ich habe auch Einsätze mit neuen Einheiten abgedeckt. Ich habe jedoch die folgenden Probleme. Angenommen, wir haben ein einfaches Album- und Künstlerunternehmen, bei dem ein Album einen einzelnen Künstler hat und ein Künstler null zu vielen Alben haben kann. Beide haben eine Namenseigenschaft.

  • Auf der Clientseite, wenn ich myartist.albums.add (Analbum) oder myartist.albums.remove (Analbum) mache, passiert nichts. HaSchanges gibt falsch zurück. (Beachten Sie, dass MyArtist und Analbum ausschließlich im Code erhalten wurden, indem die Entitäten geladen und iteriert wurden, um Verweise auf bestimmte Entitäten zu erhalten: Ich mache noch nichts in der Benutzeroberfläche oder mit DomaaNDataSourcen, nur um herumzukleiden).
  • Wenn ich den Namen auf einem Künstler und Submitchanges aktualisiere, ist die Albenkollektion, wenn die Update -Methode auf dem Server aufgerufen wird.

Hat jemand Vorschläge oder können Sie mich auf ein Beispiel verweisen, das komplexere Objekte verwendet?

BEARBEITEN (Beibehalten der oben genannten Nachwelt): Okay, es scheint, dass das zweite Problem (ein Verweis auf eine Entität oder eine Sammlung von Entitäten, die als Null angezeigt werden, wenn das Update auf dem Server gerufen wird), weil das Kind nicht als verändert und nicht als verändert und markiert wird Sie werden also nicht serialisiert und zurückgeschickt. Ich weiß, dass Sie dies erzwingen können, indem Sie [Komposition] verwenden, und ich habe es dazu gebracht, so zu arbeiten, aber dies ist keine kompositorische Beziehung, und ich möchte, dass beide Entitäten "oberste" Einheiten sind. Wie kann ich eine Entität als verändert markieren?

War es hilfreich?

Lösung

Das Problem war, dass meine [Assoziations-] Attribute nicht korrekt definiert waren. Ich wusste nicht, dass das Namen des Vereins auf beiden Seiten des Vereins gleich sein muss. Wenn die Namen gleich sind und Sie einen Build durchführen, verwendet der generierte Code auf dem Client einen anderen Konstruktor für die EntityCollection, die vom "Eltern" verwendet wird, um sich auf die "Kinder" zu beziehen, als wenn die Assoziationen nicht richtig eingerichtet sind . Der neue Konstruktor nimmt Rückrufe ab, die ein wenig zusätzliches Handhabung durchführen, wenn Sie die Sammlung hinzufügen und entfernen. Insbesondere nehmen sie die untergeordnete Entität, die Sie hinzufügen oder entfernen, und ändern Sie die Eigenschaft, die sich auf seinen Elternteil bezieht, damit alles bleibt In der Synchronisierung: Die Sammlung, von der Sie das Objekt entfernt haben, von der Sammlung, zu der Sie es hinzugefügt haben, und den Hinweis des Objekts auf seine Eltern.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top