2

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

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

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

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

任何帮助都会很棒,正如您所看到的,我是 DDD 的新手。

谢谢!

4

1 回答 1

2

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

评论将在 Story 的聚合下访问(在这里延迟加载是你的朋友)。

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

于 2011-07-19T16:33:13.697 回答