I'm one of many trying to understand the concept of aggregate roots, and I think that I've got it! However, when I started modeling this sample project, I quickly ran into a dilemma.
I have the two entities ProcessType
and Process
. A Process
cannot exist without a ProcessType
, and a ProcessType
has many Process
es. So a process holds a reference to a type, and cannot exist without it.
So should ProcessType
be an aggregate root? New processes would be created by calling processType.AddProcess(new Process())
;
However, I have other entities that only holds a reference to the Process
, and accesses its type through Process.Type
. In this case it makes no sense going through ProcessType
first.
But AFAIK entities outside the aggregate are only allowed to hold references to the root of the aggregate, and not entities inside the aggregate. So do I have two aggregates here, each with their own repository?