Pergunta

Eu estou apenas começando no DDD, e eu estou tendo alguns problemas para descobrir como para acomodar a natureza relacional dos meus dados. Eu tenho o que eu acredito que seria considerado minha raiz agregada, mas o agregado também tem um agregado de seu próprio. Não querendo violar a Lei de Deméter, eu estou querendo saber se eu estou pensando sobre isso errado e estou esperando que algum perito DDD pode oferecer algum insight.

A minha raiz agregada é a minha Account objeto, que tem um agregado de numerosas entidades AccountElement, que são eles próprios agrupamentos lógicos de entidades ProductComponent individuais.

Um fora AccountElement do contexto de uma Account não tem sentido, por isso estou confortável com a minha conclusão de que o objeto Account é minha raiz agregada, e eu antecipo que entidade que tenha uma propriedade Elements agregada. É a coleção ProductComponent que tem me confundiu. Este agregado não tem nenhum significado fora de um AccountElement, e realmente não tem nenhum significado fora de um Account.

Eu não acho que eu deveria estar acessando objetos ProductComponent individuais por pontilhando meu caminho para ele, como:

var reference = account.Elements(0).ProductComponents(0).ReferenceCode;

Mas, ao mesmo tempo que não faz sentido (a partir de uma perspectiva de domínio) para acessar um ProductComponent diretamente de uma entidade Account.

Eu tenho certeza que tudo isso é um pouco difícil de compreender sem o conhecimento do meu domínio, mas eu estou esperando é o suficiente para obter um bom feedback.

Foi útil?

Solução

O artigo Robert ligada a é uma boa. Eu acrescentaria que, se ProductComponent só existe no contexto de AccountElement e AccountElement existe apenas no contexto da conta, em seguida, por extensão ProductComponent é no contexto da conta.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top