Ich lerne DDD und habe dennoch mehr Fragen als Antworten.
Betrachten wir ein Modell eines Verzeichnisses mit einer enormen Anzahl von Dateien.
So sehe ich das:
Das Verzeichnis ist eine aggregierte Wurzel.
Diese Entität sollte über die Validierungslogik verfügen, die Eindeutigkeit des Dateinamens zu überprüfen, wenn sie hinzugefügt oder nur umbenannt wird. Die Dateientität enthält die Logik 'SetName', mit der Directory über Domain Event über Namensänderungen informiert wird.
Aber wie soll Directory dann funktionieren?
Es ist nicht immer möglich, alle Dateien in den Speicher zu laden. Sollte das Datei-Repository in diesem Fall über eine Ad-hoc-Logik zur Überprüfung der Eindeutigkeit von Namen verfügen? Ich nehme an, es ist eine tragfähige Entscheidung.
Was ist jedoch, wenn einige Dateien bereits mit der aktuellen, noch nicht festgeschriebenen Transaktion hinzugefügt oder umbenannt wurden? (Nichts verbietet dies. Transaktionsgrenzen werden extern in Bezug auf die Geschäftslogik festgelegt.) Wahrscheinlich sollte das Repository sowohl speicherinterne als auch persistierte Zustände berücksichtigen (das Zusammenführen dieser Zustände kann eine nicht triviale Aufgabe sein.)
Wenn also die Gesamtwurzel mit all ihren Kindern in die Erinnerung passt, ist alles in Ordnung. Und sobald Sie nicht alle Entitäten materialisieren können, gibt es Probleme.
Ich würde gerne wissen, wie die Ansätze für solche Situationen aussehen. Vielleicht gibt es überhaupt kein Problem und es liegt nur an meinem Missverständnis des Themas.