Что такое совокупный корень?

Вы говорите, что «Служба Windows запущена с использованием учетных данных администратора»

Вы имеете в виду фактическую учетную запись «Администратор» или пользователь в группе «Администраторы»? Запуск службы как администратора решил для меня.

401
задан Dinah 24 December 2009 в 15:02
поделиться

4 ответа

В контексте шаблона репозитория агрегированные корни - это единственные объекты, которые ваш клиентский код загружает из репозитория.

Хранилище инкапсулирует доступ к дочерним объектам - с точки зрения вызывающего абонента, он автоматически загружает их либо одновременно с загрузкой корня, либо когда они действительно нужны (как при ленивой загрузке).

Например, у вас может быть объект Order, который инкапсулирует операции над множеством объектов LineItem. Ваш клиентский код никогда бы не загрузил объекты LineItem напрямую, только Order, который содержит их, что было бы совокупным корнем для этой части вашего домена.

.
290
ответ дан 22 November 2019 в 23:26
поделиться

From Evans DDD:

AGGREGATE - это кластер ассоциированных объектов, который мы рассматриваем как единое целое для целей изменения данных. Каждый AGGREGATE имеет корень и границу. Граница определяет, что находится внутри AGGREGATE. Корень - это единичная, специфическая ENTITY, содержащаяся в AGGREGATE.

И:

Корень - это единственный член AGGREGATE, в котором внешним объектам разрешены ссылки на[...]

Это означает, что совокупные корни - это единственные объекты, которые могут быть загружены из хранилища.

Примером является модель, содержащая сущность Customer и сущность Address. Мы бы никогда не получили доступ к сущности Address непосредственно из модели, так как это не имеет смысла без контекста связанного с ней Customer. Таким образом, мы можем сказать, что клиент и адрес вместе образуют совокупность и что клиент является совокупным корнем.

195
ответ дан 22 November 2019 в 23:26
поделиться

Представьте, что у вас есть объект "Вычислитель", этот объект также не может существовать без объекта "Программное обеспечение" и объекта "Оборудование". Они образуют Компьютер совокупность, мини-экосистему для Компьютерной части домена.

Aggregate Root - это материнская сущность внутри совокупности (в нашем случае Компьютер ), общепринятой практикой является то, что ваш репозиторий работает только с сущностями, которые являются Aggregate Roots, и эта сущность отвечает за инициализацию других сущностей.

Рассмотрим Aggregate Root как точку входа в Aggregate.

В коде C#:

public class Computer : IEntity, IAggregateRoot
{
    public Hardware Hardware { get; set; }
    public Software Software { get; set; }
}

public class Hardware : IEntity { }
public class Software : IValueObject { }

public class Repository<T> : IRepository<T> where T : IAggregateRoot {}

Имейте в виду, что аппаратное обеспечение, скорее всего, тоже будет ValueObject (не имеют собственной идентичности), рассмотрим его только в качестве примера.

.
34
ответ дан 22 November 2019 в 23:26
поделиться

Из разорванного звена :

Внутри агрегата находится Корень агрегата. Корень Агрегата - это родительская сущность для всех других Сущностей и Объектов Агрегата.

Репозитарий работает с Корнем Агрегата.

Больше информации также можно найти здесь.

.
8
ответ дан 22 November 2019 в 23:26
поделиться
Другие вопросы по тегам:

Похожие вопросы: