Надеюсь, этот вымышленный пример проиллюстрирует мою проблему:
Предположим, вы пишете систему, которая отслеживает жалобы на программный продукт, а также многие другие атрибуты продукта. В этом случае SoftwareProduct — это наш совокупный корень, а жалобы — это объекты, которые могут существовать только как дочерние элементы продукта. Другими словами, если программный продукт удаляется из системы, то и жалобы тоже.
В системе есть панель инструментов, похожая на веб-страницу, которая отображает множество различных аспектов одного программного продукта. Один раздел на панели инструментов отображает список жалоб в сетке, похожей на мод, показывая только некоторую информацию очень высокого уровня для каждой жалобы. Когда пользователь типа администратора выбирает одну из этих жалоб, он перенаправляется на экран редактирования, который позволяет ему редактировать детали одной жалобы.
Возникает вопрос: как лучше всего экрану редактирования получить одну жалобу, чтобы ее можно было отобразить для целей редактирования? Имейте в виду, что мы уже установили SoftwareProduct как совокупный корень, поэтому прямой доступ к жалобе не должен быть разрешен. Кроме того, система использует NHibernate, так что немедленная загрузка является вариантом, но я понимаю, что даже если одна жалоба загружается через SoftwareProduct, как только осуществляется доступ к коллекции жалоб, загружается остальная часть коллекции. Итак, как же получить единственную жалобу через SoftwareProduct, не неся накладные расходы на загрузку всей коллекции жалоб?