Frage

Wenn mein Verständnis von Aggregaten Roots korrekt ist, sollte die Wurzel verantwortlich auch für einen seiner „Kinder“ zu löschen. Das würde übersetzen scheinbar in so etwas wie folgt aus:

order.removeOrderLine(23);

Was es effektiv aus der Sammlung entfernen würde. Doch wie wird diese beibehalten? Ist mein ORM UnitOfWork angenommen, dass etwas ging in dieser Sammlung fehlen zu erfassen, und es dann aus der Datenbank löschen?

Sollte ich removeOrderLine ein Verfahren der OrderRepository statt?

War es hilfreich?

Lösung

Ihre Arbeitseinheit sollte in der Regel darum kümmern, aber es hängt von ihrer Umsetzung, und zwar auf die Art und Weise es Änderungen erkennt. Einige Arbeitseinheit Implementierungen (dh Ruhezustand) hält eine Kopie des Aggregats, bevor Sie es geändert, so dass am Ende des Geschäftsabschlusses (wenn Sie so etwas wie unitOfWork.PersistAll () aufrufen), versucht es, aktuelle Version aller Objekte zu entsprechen ( und Sammlungen) gegen die ursprüngliche Version.

Andere Art und Weise ist Ihre Domain-Entitäten mehr mit Ihrer Arbeitseinheit gekoppelt ist, so dass das Unternehmen der Arbeitseinheit benachrichtigt, wenn etwas ändert (dh die order.removeOrderLine Methode, um die Einheit der Arbeit über die Änderung informieren würde).

Es gibt mehrere Möglichkeiten, wie UOW Änderungserkennung zu implementieren. Werfen Sie einen Blick auf mehrere Implementierungen für hibernat für Inspiration.

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