C# 正确的聚合根是什么?
我有以下数据结构:C# 正确的聚合根是什么?,c#,design-patterns,domain-driven-design,repository-pattern,ddd-repositories,C#,Design Patterns,Domain Driven Design,Repository Pattern,Ddd Repositories,我有以下数据结构: class Post { public string Title { get; set;} public Category Category { get; set;} } 记住一篇文章总是属于一个范畴,而且只有一个范畴,我的推理正确吗 Category是聚合根目录(因为没有它,帖子不可能存在) 应该有CategoryRepository(使用GetCategory和GetPost等方法),但没有PostRepository(因为Post不是聚合根) 您希望
class Post
{
public string Title { get; set;}
public Category Category { get; set;}
}
记住一篇文章总是属于一个范畴,而且只有一个范畴,我的推理正确吗
是聚合根目录(因为没有它,帖子不可能存在)Category
- 应该有
(使用CategoryRepository
和GetCategory
等方法),但没有GetPost
(因为PostRepository
不是聚合根)Post
Post
的实例?Post.Title
是Post
的唯一标识符吗?如果是这样,那么Post
是一个有效的聚合根,您应该创建一个PostRepository
,它检索Post
的一个实例,给定它的Title
以汽车为例。一辆汽车必须有一种颜色,但是仅仅因为一辆汽车没有颜色就不能存在,就说颜色是聚合根是错误的。我想参考一辆汽车的车牌号(独立于它的颜色)。它必须有颜色这一事实只是我的汽车领域模型的一个特点,它表明我不能在不提供颜色的情况下构建汽车实例。当涉及到聚合根设计考虑时,我经常引用此资源
. 这解决了您的一些关键思考过程,并应该向您说明为什么类别是一个非常糟糕的聚合根。我没有理解您不考虑使用
PostRepository
。也许拥有GetPost
符合CategoryRepository
的逻辑,但是Post
有自己的领域,它有自己的唯一目的。如果我错过了,请告诉我anything@MunimAbdul因为Post
不是聚合根,所以应该只为聚合根创建存储库。太棒了!谢谢你的链接。另一个很好的例子-标签。在写关于编程的文章之前,您不会创建标记“编程”,而是将其关联起来。