Вы должны проектировать небольшие агрегаты вместо больших.
В этом эссе подробно объясняется, как это сделать: http://dddcommunity.org/library/vernon_2011/. В нем объясняется, как разбить ваши агрегаты на более мелкие, чтобы вы могли управлять сложностью.
В вашем случае вместо Агрегата, состоящего из двух объектов: Военнослужащий и Служба с Военнослужащим , являющимся совокупным корнем, вы можете разложить его на два меньших агрегаты с одной сущностью. ServiceJob будет ссылаться на Serviceman по ID, и вы можете использовать ServicejobRpository для выполнения запросов.
В вашем примере у вас будет ServicejobRpository.firstServiceJobAfterDate (guid servicemanID, DateTime date) .
Таким образом, если у вас много сущностей и вам нужно масштабировать, вы можете сохранить сущности Servicejob на другом сервере БД.
Если по какой-то причине Военнослужащему или Servicejob нужны ссылки друг на друга для выполнения своей работы, вы можете использовать Service , который будет использовать ServicemanRepository и ServicejobRepository для получения обоих агрегатов и передачи их друг другу, чтобы они могли выполнять свою работу.