域驱动设计 - 聚合问题

时间:2011-07-19 16:02:40

标签: .net architecture domain-driven-design dns ddd-repositories

简而言之,我的域名允许用户提交故事(关于一个人或一组人),其中包含许多不同的状态和转换,以及在这些状态下允许的行为。

因此,在设计的这个状态下,用户正在创建草稿并提交他们的故事。我的域名包含故事,小组和团队成员。

我的第一个问题是谁有责任加载完整的聚合?应用层应该根据手头的任务指定吗?他真的需要知道所有数据需要加载吗?或者这应该属于始终急切加载关联数据的存储库?也许使用延迟加载(透明度可能有点吓人)?

对于我的下一个任务,我需要允许将评论添加到故事中,并在用户观看故事时创建记录。这是否属于聚合,因为没有故事它们没有意义?这是我的困惑。如果它们确实属于聚合,我在添加评论时只需要加载整个聚合,或者只是添加一条已被查看的记录?

任何帮助都会很棒,如你所见,我是DDD的新手。

谢谢!

1 个答案:

答案 0 :(得分:2)

我不确定这在EF中是如何工作的,但是对于NHibernate,我会让应用层从存储库加载聚合根,并启用延迟加载(我假设EF具有相同的延迟加载功能)。 / p>

评论将在故事的汇总下访问(再次懒惰加载是你的朋友)。

我不会把故事情节置于故事之下,因为这听起来像故事本身的正交概念。我之前通过向用户添加用户登录信息(如上次登录时间)遇到了麻烦。这是权宜之计,但我的模型搞得一团糟。您的里程可能会有所不同。