DDD/NHibernate使用聚合根和对网页设计的影响 - 例如 编辑聚合根的子节点

Pat*_*Pat 1 nhibernate domain-driven-design aggregateroot

希望这个虚构的例子能说明我的问题:

假设您正在编写一个跟踪软件产品投诉的系统,以及该产品的许多其他属性.在这种情况下,SoftwareProduct是我们的聚合根,而投诉是只能作为产品子项存在的实体.换句话说,如果软件产品从系统中删除,那么投诉也是如此.

在系统中,有一个类似于网页的仪表板,它显示单个SoftwareProduct的许多不同方面.仪表板中的一个部分以时尚网格显示投诉列表,仅显示每个投诉的一些非常高级别的信息.当管理员类型用户选择其中一个投诉时,会将其定向到编辑屏幕,以便他们编辑单个投诉的详细信息.

问题是:编辑屏幕检索单个投诉的最佳方式是什么,以便可以显示它以进行编辑?请记住,我们已将SoftwareProduct建立为聚合根,因此不应允许直接访问Complaint.此外,系统正在使用NHibernate,因此急切加载是一个选项,但我的理解是,即使通过SoftwareProduct急切加载单个投诉,只要访问Complaints集合,就会加载其余的集合.那么,如何通过SoftwareProduct获得单一投诉,而不会产生加载整个投诉集合的开销?

Jos*_*osh 5

这有点涉及语义和宗教信仰,但在编辑投诉的背景下,投诉是根本对象.编辑投诉时,父对象(软件产品)并不重要.它显然是一个具有独特身份的实体.因此,您可能会有一个服务/存储库专门用于保存更新的投诉等.

此外,我认为你有点太消极了.投诉?"评论"怎么样?还是"ConstructiveCriticisms"?