Ihre Verwendung des Aggregatkonzepts scheint falsch zu sein. Objekte in einem Aggregat können tatsächlich Referenzen auf andere Aggregate enthalten. Die Regel ist ein externes Objekt, das keinen Verweis auf etwas in einem Aggregat enthalten kann.
Auf dem Registrierungsobjekt scheinen Sie es erstellt zu haben, um einige aggregierte Aggregatbeziehungen zu vermeiden. Deshalb erstellen Sie kein Objekt. Wenn es in Ihrer Domain tatsächlich eine Registrierung gibt, erstellen Sie diese und modellieren Sie sie. Wenn es nicht in Ihrer Domäne ist, fügen Sie es nicht nur hinzu, um einen Pfad zu durchlaufen.
Nachdem Sie Registrierung hinzugefügt haben, sagen Sie, dass es keinen Verweis auf ein soziales Konto enthalten kann, da es Teil von Publisher ist. Das ist nicht die Regel, aber wichtiger, wie wurde Registrierung plötzlich Teil des Publisher-Aggregats? Nur für Verleger mit einer Registrierungssammlung?
Ein Aggregat ist eine Gruppe von Objekten, die als eine Einheit zur Erhaltung von Zustand und Invarianten behandelt werden. Das Vorhandensein einer Beziehung allein verleiht keine Mitgliedschaft in einem Aggregat.
Aber schau jetzt auf die andere Seite. Die Registrierung ist 1 zu 1 mit Social Account. Und wenn wir ein Social Account entfernen, macht es Sinn, immer noch eine Registrierung bei einem Publisher zu haben? Wenn nicht, dann ist die Registrierung wahrscheinlich tatsächlich Teil des SocialAccount-Aggregats. Deshalb erstellen wir Aggregate - um sicherzustellen, dass Objekte und ihre Beziehungen nach einer Zustandsänderung immer gültig sind. Wenn die Änderung des Status beim Entfernen eines SocialAccounts das Entfernen aller mit diesem Konto verknüpften Registrierungen umfasst, möchten wir sie in das Aggregat aufnehmen, um diese Regel zu erzwingen.
Jetzt haben Sie tatsächlich die "Aggregatregel" verletzt - Sie haben eine externe Beziehung von Publisher zu einem Objekt, Registrierung, das ist ein interner Teil des SocialAccount-Aggregats.
Diese Konzepte sind mehr als nur Regeln, sie haben Gründe. Sie müssen überprüfen, was Aggregat wirklich bedeutet, verstehen, was die Regeln tatsächlich sagen und was sie wirklich bedeuten, warum sie überhaupt existieren. Dann bewerten Sie Ihre Beziehungen neu und fassen Sie die Definitionen entsprechend zusammen.
Das ist im Wesentlichen die von Evans vorgeschlagene Gesamtdefinition. Persönlich finde ich den globalen versus lokalen Identitätsaspekt etwas verwirrend und ziehe es vor, zu betonen, dass keine anderen Referenzen als eine transiente erhalten werden und eine enthaltene Entität nur durch Traversieren über die aggregierte Wurzel zugänglich ist. – Sisyphus