我想知道在以下情况下什么被认为是更好或更正确的做法:
我已经用 NHibernate 映射了以下业务实体:
- 墙
- 海报
- 墙邮评论
一堵墙有零对多的墙贴。WallPost 具有零对多的 WallPostComments。聚合根是 Wall。
我正在编写一个将 WallPostComment 添加到 WallPost 的任务。该应用程序是一个MVC应用程序,添加新WallPostComment的请求包含评论所属的WallPost的id。为了添加评论,我需要检索应该添加的帖子。我的问题是:最好/最正确的方法是什么?
到目前为止,我已经尝试了两种方法,一种感觉更“正确”,尽管它效率低下。另一种更有效的方法感觉是“错误的”。
1) 我从会话中加载 Wall 聚合根,并从其 Posts 集合中选择 FirstOrDefault。这感觉“正确”,因为我正在通过聚合根访问墙帖,但是这样做会导致从数据库中获取所有墙帖(无界结果集)。
2) 我使用请求传递给我的 wallPostId 直接从会话加载墙帖。这感觉“错误”,因为我要绕过聚合根 - 但它是对单行数据的数据库的一次点击。
哪个是更好或首选的方法?你还有什么建议?