Frage

Ich bin neu in CQRS und verwirrte, wie Befehl, um eine Adressänderung zu einem Kundenobjekt schreibt

Lassen Sie uns sagen ich Kundeninformationen in zwei Tabellen geteilt haben

Kunde - Domain-Datenbank

Aktiv Bevorzugte

Customer_Read Datenbank

Name,

Adresse,

Telefon,

E-Mail

Benutzer ändern Adresse des Kunden. Die Adressfelder sind alle in Lese Datenbank. es können drei oder mehr Abfrage freundliche Tabellen sein, die Adressinformationen zu halten.

Wenn ich die CQRS Implementierungen verstehen (Probe) Kunden-Domain (entfernt Aggregate root) veröffentlichen Veranstaltung über Adressänderung, die durch mehrere Handler gehandhabt werden sollte jede der Tabelle zu aktualisieren.

Wie kann ich das implementieren, wenn ich den Zustand des Kundenobjekts ändert werden wont? Haben Domain haben zu wissen, dass es Adresse in einer anderen Datenbank hat?

Vielen Dank im Voraus.

Grüße,

Das Mar

Update -

Nach dem durch weitere Beiträge über Netz gehe Ich gehe davon aus, dass, wenn der Staat nicht durch den Befehl kein Ereignis geändert wird, wird erzeugt, um die Domain selbst zu retten, sondern Ereignisse angewandt werden die Adresse in Abfrage / Ansicht Modell zu ändern freundliche Tabellen.

War es hilfreich?

Lösung

Sie müssen noch einige Domain-Daten irgendwo in der Schreib Persistenz bestehen bleiben. Auf diese Weise wird die Adresse in diesem persistenten Speicher gespeichert wird, wird nach der Veranstaltung veröffentlicht es zu ändern.

Auf diese Weise:

  • , wenn es keine Veränderung gab - wir veröffentlichen die Veranstaltung überspringen
  • Domain braucht nichts über Objekte zu wissen, dass kann (oder auch nicht), um seine Ereignisse abonniert werden.

Diese Logik gilt sowohl für die Persistenz in relationalen DBs (MS SQL mit NHibernate, zum Beispiel) und Event-Sourcing-Ansatz.

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