ПРОБЛЕМАДолжен ли я избегать использования совокупных корней?
Есть четыре лица:
class Product : Entity<Product> {
public virtual String Title { get; set; }
public virtual Category Category { get; set; }
public virtual Vendor Vendor { get; set; }
}
class Category : Entity<Category> { /* properties */ }
class Vendor : Entity<Vendor> { /* properties */ }
Ни один из этих четырех определяются как компоненты, и я не знаю, какой из них следует использовать (отметьте его IAggregateRoot
интерфейс), как совокупный корень.
Мне нужно, чтобы легко получить доступ списки поставщиков, категории, чтобы показать их на странице при создании нового продукта.
Тогда должно появиться три экземпляра Repository
в соответствии с этими объектами.
ASIDE
Я видел несколько крупномасштабных проектов. Они массово используют списки независимых объектов, таких как Vendor, State, TechnicalOptions. Я думаю, что логично разрабатывать вещи с совокупными корнями, но я не знаю, подходят ли там принципы DDD.
Зачем вам нужен интерфейс маркера? Какую пользу вы получаете, отмечая что-то как «IAggregateRoot»? –
Это просто соглашение больше ничего. Используя подпись, например 'IRepository, где T: IAggregateRoot', вы можете ограничить свои репозитории, поэтому из них будут доступны только совокупные корни. –
lexeme