Я играю с DDD, и этот вопрос всплывает. Как загрузить дочерние агрегированные корни? Возникло бы несколько проблем с производительностью. Представьте себе следующий пример:
public AggregateRoot1
{
#region
properties
#endregion
public AggregateRoot2 AR2{get;set;}
public IEnumerable<AggregateRoot3> AR3List{get;set;}
(...)
}
Если я загружу список AggregateRoot2 и AggregateRoot3, когда получу AggregateRoot1, график будет огромным. Это не кажется хорошим подходом.
У меня есть два варианта:
- Замените AggregateRoot2 AR2 на Guid AR2Id и IEnumerable AggregateRoot3> AR3List на IEnumerable Guid> AR3ListIds. Все ссылки AR должны быть заменены идентификатором.
- Поскольку мне не нравится подход IEnumerable ARListIds, я думаю об удалении 0 ... * ссылок на AR. Все операции, для которых требуются данные списка AR, должны выполняться через службы домена, такие как David Masters, здесь
Кстати, я не собираюсь использовать ленивую загрузку.
Я с нетерпением жду вашего мнения о загрузке дочерней AR. Спасибо