【发布时间】:2014-05-07 20:04:13
【问题描述】:
问题
如何在 DDD 中实现大型集合,“感觉”它们应该是聚合根的一部分,但如果它们是不切实际的?以下是一些基于我的域的示例。
Employee 聚合根
-
Announcements收藏 - 直接
Messages收藏
Product聚合根
-
Stock物品收藏
等等。等等。
我在想什么
我想保留从聚合根目录导航到这些大型集合的能力,但由于我使用存储库包装我的 O/RM,因此延迟加载并不是一个真正的选择...除非我通过注入实现延迟加载要么是必要的存储库。但我从我所读到的关于 DDD 的内容中知道,域实体不应该知道任何此类存储库..
另一种选择是采用这样的方法,即我的域中任何潜在的大型实体集合是聚合根,并且应该拥有自己的存储库,并具有所需的接口来通过以下方式获取项目集合另一个聚合根。例如。
public interface IStockRepository
{
IEnumerable<StockItem> FetchByProduct(Product product);
// ...
}
【问题讨论】:
-
聚合根不是容器,存储库是。
标签: c# domain-driven-design repository aggregateroot