Frage

Eine der grundlegenden Lehren des CQRS, wie ich es verstehe, ist, dass Befehle Verhalten zentriert sein sollten, und haben einen Wert in dem Geschäft oder die UL, und nicht datenzentrische, dh., CRUD. Statt sich auf einen Kunden zu aktualisieren, haben wir Befehle wie CustomerHasMoved. Was passiert, wenn Sie CRUD-Bildschirme haben, die es bestimmte Daten zu korrigieren sind. Zum Beispiel müssen wir den Namen eines Kunden ändern, die falsch geschrieben ist. Das hat nicht wirklich viel Wert im Geschäft. Sollte dies unter dem Dach eines Updatecustomer Befehl sein nur?

War es hilfreich?

Lösung

Eigentlich könnte es verschiedene Gründe geben den Namen eines Kunden zu aktualisieren. Wie Sie sagten, es könnte falsch geschrieben oder ... könnten Sie heiraten und Ihren Namen Ihren Mann ändern.

Wenn Sie nur einen Updatecustomer Befehl haben, würden Sie die ursprüngliche Absicht verlieren, und Sie würden nicht in der Lage sein, unterschiedliche Verhaltensweisen für jeden von ihnen zu haben. Wenn der Name misselled wurde könnte es so einfach sein wie die Aktualisierung der Datenbank, während, wenn Ihr Kunde heirateten Sie benötigen die Vermarktung departement zu benachrichtigen, so tthat sie einen Rabatt anbieten können.

Im Fall, dass Ihr Unternehmen CRUD ist rein, das ist es nicht beabsichtigt ist, die Sie mit Modifizierung der Eigenschaften zuordnen können, dann OK, es ist einen UpdateEntityCommand zu haben. Sie können dann langsam auf etwas mehr Aufgabe zugrunde Übergang

Andere Tipps

Ich mag nur auf diesem schnell um einen Kommentar zu setzen, wie es aufgetaucht.

Es ist wichtig zu beachten, dass einige Objekte tatsächlich CRUD sind und das ist ok. Ich kann nicht wirklich, warum ein Name in meiner Domain ändert, wo ich Produkte für Menschen liefern und benötigen nur, dass die Daten von Adressetiketten zu drucken. Der Trick ist, das Verhalten des Standard bei der Herstellung und dann zu einer CRUD-Schnittstelle zurückkehrt, wenn Sie sicher sind Sie wirklich nicht über die Gründe im Gegensatz egal umgekehrt.

Greg

CustomerHasMoved ist das Ereignis, das ausgelöst wird, nachdem Sie die Kunden vor Ort aktualisiert haben. Dieses Ereignis aktualisiert die Lese Datenbanken / Cache-Datenbanken. Der Befehl aus der gui sollte so MoveCustomer oder etwas sein. Ich glaube, ich würde das Update des Kundennamen in einem Befehl wie Updatecustomer setzen.

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