Допустим, у нас есть два агрегатных корня: ListingItem и Product. ListingItem для доступа к свойствам продукта. Может ли объект продукта быть получен с использованием идентификатора внутри ListingItem AR? Другими словами, могу ли я сослаться на AR продукта из другого AR? (Контекст не важен здесь, и эти два класса - только примеры). Например,
public class ListingItem {
...
...
public PerformSomeCalc(int productId) {
Product p = Product.GetById(productId);
...
...
}
...
...
}
Я также мог бы создать объект значения Id для продукта, используя шаблон идентификации, как описано в «Красной книге», и использовать его в ListingItem. Например,
public class ProductId : ValueObject {
}
По сути, мой вопрос заключается в том, как агрегированные корни должны ссылаться друг на друга? Это должно быть через идентификаторы или это может быть прямая ссылка на объект? Например, может ли один агрегат root иметь ссылку на свойство другого AR как отношение один-к-одному? Также, как в примере выше, можно ли получить объект AR из другого AR?