Какой правильный совокупный корень? - PullRequest
2 голосов
/ 11 ноября 2011

У меня есть следующая структура данных:

class Post
{
    public string Title { get; set;}
    public Category Category { get; set;}
}

Имея в виду, что сообщение всегда относится к одной и только одной категории, мои рассуждения верны?

  • Category - совокупный корень (поскольку сообщение не может существовать без него)
  • Должен быть CategoryRepository (с такими методами, как GetCategory и GetPost), но не PostRepository (потому что Post не является агрегированным корнем)

Ответы [ 2 ]

5 голосов
/ 11 ноября 2011

Как вы хотите сослаться на экземпляры Post?Является ли Post.Title уникальным идентификатором для Post?Если это так, то Post является допустимым агрегированным корнем, и вы должны создать PostRepository, который извлекает экземпляр Post, если он Title.

.машина.У автомобиля должен быть цвет, но указывать, что цвет является совокупным корнем только потому, что автомобиль не может существовать без него, неправильно.Я хочу ссылаться на автомобиль независимо, учитывая его номерной знак (который не зависит от его цвета).Тот факт, что у него должен быть цвет, является просто особенностью модели моего автомобильного домена, которая гласит, что я не могу создать экземпляр автомобиля без предоставления цвета.

1 голос
/ 11 ноября 2011

Я часто цитирую этот ресурс, когда речь идет об общих соображениях по проектированию корня RavenDB - голосование в стиле StackOverflow с живыми проекциями . Это относится к некоторым вашим ключевым мыслительным процессам и должно показать вам, почему Category будет VERY POOR агрегатным корнем.

...