2

可以从聚合中获取只读集合而不通过根来获取它吗?我的模型现在做了一些这样的事情,我想知道这是否是一个可以接受的设计。谢谢

编辑:

这是一个例子

我有一个名为 UserAccount 的聚合根实体和另一个名为 VideoStore 的聚合根。用户可以有多个他们所在的商店,视频商店可以有很多用户。一个非常基本的多对多,但这并不是因为多对多桥表包含状态信息,所以它也必须是一个实体。因此,我有一个名为 UserVideoStores 的桥实体,它是聚合根 VideStore(一对多)的子实体。

现在,当用户登录时,我想查找他们所在的 VideoStores 并向他们显示该信息。我可以通过使 UserAccount 实体直接(一对多)引用聚合根 VideoStore 的子 UserVideoStores 来轻松做到这一点。这样做似乎更容易,然后必须使用 HQL 查询并从图表底部向上搜索以查找用户所在的商店。

那有意义吗?

编辑:

好吧,我想出了一个让我的模型更干净的解决方案。我没有直接考虑我的一些设计,我学会了如何更好地使用 nHibernate 来帮助我想出一个解决方案。谢谢

4

2 回答 2

2

Evans 说“根是 AGGREGATE 中唯一允许外部对象持有对...的引用的成员”(第 127 页)

我的理解是聚合应该作为一个单元出现在外部对象中。此外,得墨忒耳法则似乎也适用。归根结底,我认为这是不能接受的。

于 2009-07-13T20:37:08.483 回答
2

实际上,Eric 已经改变了对聚合根规则严格性的看法。
他最近说了一些类似的话

“冷静点,伙计。试着阻止自己违反规则。但是,嘿,不要为此自责。DDD 摇滚老兄,但如果你真的需要打破 Agg 规则。是的,和平。”

请参阅:“Eric Evans:我从本书中学到的关于 DDD 的知识” http://dddcommunity.org/library/evans_2009_1

于 2010-01-22T12:03:45.903 回答