希望这个虚构的例子能说明我的问题:
假设您正在编写一个系统来跟踪软件产品的投诉以及有关该产品的许多其他属性。在这种情况下,SoftwareProduct 是我们的聚合根,而 Complaints 是只能作为产品子项存在的实体。换句话说,如果软件产品从系统中删除,那么投诉也应如此。
在系统中,有一个类似网页的仪表板,显示单个软件产品的许多不同方面。仪表板中的一个部分以类似网格的方式显示投诉列表,仅显示每个投诉的一些非常高级的信息。当管理员类型的用户选择其中一个投诉时,他们会被引导到一个编辑屏幕,允许他们编辑单个投诉的详细信息。
问题是:编辑屏幕检索单个投诉的最佳方式是什么,以便可以显示以进行编辑?请记住,我们已经将 SoftwareProduct 建立为聚合根,因此不应允许直接访问投诉。此外,系统正在使用 NHibernate,因此可以选择急切加载,但我的理解是,即使通过 SoftwareProduct 急切加载单个投诉,只要访问投诉集合,就会加载集合的其余部分。那么,如何通过 SoftwareProduct 获得单个投诉,而不会产生加载整个投诉集合的开销?