【发布时间】:2011-11-22 23:47:12
【问题描述】:
我已经使用 DDD 一段时间了,所以我对聚合的想法很满意。起初,我确实在不使用/保留对其他根聚合的引用时遇到了麻烦,但我认为我已经加入了......所以:
- 将根聚合存储为一个文档....检查
- 使用包含不改变或很少改变的属性的非规范化引用......检查
如果我确实希望获得对另一个根聚合的完整引用,我知道建议我保留对其 ID 的引用,并且可以使用 RavenDB 客户端 API 的 Includes 来检索所有实体都有效。
处理数据部分,我没有看到的是在我的实体类中处理这个的最好方法:
- 在我的类中使用 Product 上的 [JsonIgnore] 具有 Product 和 ProductId 属性以确保它不会与文档一起保存。
- 然后可以在存储库中将完整的对象图重新粘合在一起(使用 API 的 Includes 以提高效率)或者我可以将服务注入将获取 Product 的实体懒惰(可能 N+1 次命中)
- 在 ViewModel 中将其重新粘合在一起。我不喜欢这个想法,因为如果使用不当,我可能会在域中出现意外的 NULL 引用。
- 其他一些我没有看到的明显方式?
想法?
【问题讨论】: