我有以下数据结构:
class Post
{
public string Title { get; set;}
public Category Category { get; set;}
}
请记住,帖子始终属于一个且只有一个类别是我的推理正确吗?
Category
是聚合根(因为没有帖子就不能存在) CategoryRepository
(使用GetCategory
和GetPost
等方法)但不是PostRepository
(因为Post
不是聚合根) 答案 0 :(得分:5)
您想如何引用Post
的实例? Post.Title
是Post
的唯一标识符吗?如果是,那么Post
是一个有效的聚合根,您应该创建一个PostRepository
来检索Post
的实例,并给它Title
。< / p>
以汽车为例。汽车必须有颜色,但说明颜色是聚合根只是因为没有汽车就不能存在是错误的事情。我想独立引用一辆车,因为它的牌照号码(与其颜色无关)。它必须有颜色这一事实只是我的汽车领域模型的一个特征,它表明我不能在不提供颜色的情况下构建汽车实例。
答案 1 :(得分:1)
在集合根设计注意事项时,我经常引用此资源 RavenDB - StackOverflow style voting with Live Projections。这解决了一些关键的思考过程,并且应该向您展示为什么Category会成为非常糟糕的聚合根。