我偶然浏览了StackOverflow和Google以及其他网站,但无法掌握如何实现它的概念。
在这里,我有一个非常简单的模型:Item
和ItemActivity
。很明显,Item
是聚合根,ItemActivity
是一个实体。
所以根据DDD原则,我应该只实施ItemRepository
。除了自己的 - 比方说 - CRUD 操作外,ItemRepository
还应该管理其子实体ItemActivity
的 CRUD 操作。
下面是一些实现问题:
- 我应该在域中实现子实体操作还是存储 库。
- 加载与项相关的所有子实体或导航到它们适用于实体框架。用
.include(..)
意志加载根做工作。但是更新ItemActivity
甚至更新呢删除ItemActivity
?从集合中删除它们不会坚持。 - 假设我必须找到一个时间跨度内的所有活动。如何当我无法查询时,是否可以实现这样的查询
ItemActivity
或更糟的是,不存在任何 根本ItemActivityRepository
。 - 是否有涵盖此主题的示例。有很多文章写过它,很多答案没有具体的代码和理论覆盖范围,但请问是否有任何真实的样本。我曾从事过Microsoft西班牙 N 层 DDD 示例,但不够详细。
此致敬意。
1.我应该在域或存储库中实现子实体操作。
否。存储库仅操作聚合。
2.使用实体框架可以加载与项相关的所有子实体或导航到它们。使用 .include(..) 加载根目录将 做工作。但是更新项目活动甚至删除呢? 项目活动?从集合中删除它们不会保留。
Item.getActivity().updateRemark("...");
ItemRepository.store(Item);
3.假设我必须找到一个时间跨度内的所有活动。
如果需要按范围查询 ItemActivity ,最好将 ItemActivity 设置为另一个聚合根。较小的聚合有助于这种情况。
4.Is there a sample covering this topic.
著名的有效骨料设计。有一些示例代码(尤其是在第 1 部分中)与您的情况密切相关。