【发布时间】:2013-10-31 10:42:48
【问题描述】:
我偶然浏览了 StackOverflow 和 Google 等网站,但无法掌握如何实现它的概念。
这里我有一个非常简单的模型:一个Item 和一个ItemActivity。很明显Item是聚合根,ItemActivity是一个实体。
所以根据 DDD 原则,我应该只实现ItemRepository。除了它自己的 - 让我们说 - CRUD 操作之外,ItemRepository 还应该管理其子实体 ItemActivity 的 CRUD 操作。
还有一些实现问题:
- 我应该在域中实现子实体操作还是 存储库。
- 加载与项目相关的所有子实体或导航到它们
可以使用实体框架。使用
.include(..)加载根目录将 做这项工作。但是更新ItemActivity甚至 删除ItemActivity?从集合中删除它们不会 坚持下去。 - 假设我必须找到一个时间跨度内的所有活动。如何
当我无法查询时,可以实现这样的查询吗
ItemActivity或更糟的是不存在任何ItemActivityRepository。 - 是否有涵盖此主题的示例。有很多文章 写了很多没有具体代码和理论的答案 覆盖范围,但请提供任何真实样本。我工作过 Microsoft 西班牙 N 层 DDD 示例,但不够详细。
最好的问候。
【问题讨论】:
-
不要误以为聚合根是子对象的容器。在定义任何域对象时,忘记任何与持久性相关的事情。这包括忘记关系数据库原则。
标签: entity-framework domain-driven-design aggregateroot