我偶然发现了StackOverflow和Google以及其他网站,但却无法理解如何实现它。
这里我有一个非常简单的模型:Item
和ItemActivity
。很明显,Item
是聚合根,ItemActivity
是实体。
所以根据DDD原则,我应该只实现ItemRepository
。除了它自己的-lets说 - CRUD操作之外,ItemRepository
也应该管理它的子实体{,ItemActivity
,CRUD操作。
以下是一些实施问题:
.include(..)
加载根目录
做的工作。但是如果更新ItemActivity
甚至更新
删除ItemActivity
?从集合中删除它们不会
持续。ItemActivity
或更糟糕的是没有任何
完全ItemActivityRepository
。最好的问候。
答案 0 :(得分:3)
1.我应该在域或存储库中实现子实体操作。
没有。存储库仅操纵聚合。
2.使用实体框架可以加载与项目相关的所有子实体或导航到它们。使用.include(..)加载根目录 做的工作。但是如果更新ItemActivity甚至删除呢 ItemActivity?从集合中删除它们不会持久。
Item.getActivity().updateRemark("...");
ItemRepository.store(Item);
3.假设我必须在一段时间内找到所有活动。
如果需要按范围查询,最好使ItemActivity成为另一个聚合根。较小的聚合可以帮助解决这个问题。
4.Is there a sample covering this topic.
着名的Effective Aggregate Design。有一些示例代码(特别是在第1部分中)与您的案例密切相关。