7

Jeśli podążacie za wzorem repozytorium, oni ... powiedzmy, aby utworzyć repozytorium dla każdej jednostki agregującej root.jedno repozytorium dla każdej encji agregującej root w projekcie opartym na domenie

Oznacza to, że gdy mam ten model:

klient ma zleceń zamówienie ma produktów produkt ma dostawca

etc ...

Oznaczałoby to mam 4 repozytoriów, które są wprowadzane do JEDEN repozytorium. klient jest podmiotem głównym.

Czy źle rozumiem tutaj coś?

Odpowiedz

8

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.

+0

Czy mógłbyś to poprawić: "... ponieważ zamówienie jest agregatem głównym agregatu zamówień" – Elisabeth

+0

Zmieniłem nieco sformułowanie, ale nie jestem pewien co chciałeś poprawić? – eulerfx

+0

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

0

Masz 4 powiązane jednostki, jak opisano powyżej, a repozytorium implementuje kontekst transakcji dla wszystkich powiązanych obiektów.

+0

pytanie dotyczy DDD nie o jednostkach i modelach danych –

Powiązane problemy