To jest poprawne, że powinieneś mieć repozytorium na agregat. To, co może się jednak różnić, to zbiór agregatów w Twojej domenie. Model klienta/zamówienia/produktu/dostawcy można rozłożyć na agregaty na kilka sposobów. Rozkład na agregaty zależy od wielu czynników i zależy od danej dziedziny.
Zagregowany powinien być granicą konsystencji, co oznacza, jaki zestaw podmiotów powinien być spójny w kontekście zachowań powiązanych z tymi jednostkami. Biorąc pod uwagę to ograniczenie, odniesienia obiektów między agregatami powinny zostać wyeliminowane i zastąpione odniesieniami do tożsamości.
W twoim modelu może się zdarzyć, że klient, zamówienie, produkt i dostawca są odrębnymi agregatami i dlatego wymagają osobnych repozytoriów. Mimo że klient jest agregatem głównym (częścią agregatu klienta), a zamówienie zależy od klienta, nie oznacza to, że repozytorium klienta powinno zawierać repozytorium zamówień. Repozytorium zamówień powinno być całkowicie oddzielne, ponieważ zamówienie jest źródłem agregatu zamówień.
Zobacz szczegółowe informacje na temat projektowania agregatów na stronie Effective Aggregate Design by Vaughn Vernon.
Czy mógłbyś to poprawić: "... ponieważ zamówienie jest agregatem głównym agregatu zamówień" – Elisabeth
Zmieniłem nieco sformułowanie, ale nie jestem pewien co chciałeś poprawić? – eulerfx
hm Przypuszczam, że nie rozumiem, dlaczego zamówienie jest źródłem agregatu zamówień. Czy możesz mi powiedzieć, gdzie zamówienie nie byłoby źródłem agregatu zamówień? Dzięki za link, dodałem do niego zakładkę. – Elisabeth