0

假设我需要为 StackOverflow 实现域模型。

如果我在做 ORM,我如何定义(和映射)属性来获取“最后的评论”和其他“最后”的东西?在我看来,这应该反映在域模型中。

有时我可能需要“所有评论”...

4

2 回答 2

2

我可能会受到我的 ORM 工具的影响,但我认为这是一个查询而不是域属性。域包含关联,存储库封装查询,例如您所描述的查询。

于 2008-11-20T19:16:16.663 回答
2

您将查询您的存储库以获取特定用户的最后评论。就像是

IList<Comment> recentComments = repository.GetRecentComments(user,20);

您可以在模型中执行此操作,但取决于您希望获得多少评论,我会避免它。模型不应该知道如何填充自己,这是存储库的工作;但是,如果您使用的是 NHibernate 之类的东西,它就会在那里。

public class User{

 public IList<Comment> Comments { get;set;}

 public IList<Comment> GetRecentComments()
 {
   // Logic
 }


}

在那个实现中,你总是要加载所有评论以获得最后 20 条评论。如果只有 50 条评论,这没什么大不了的,但如果有 5,000 条评论,你就会有相当多的开销。

于 2008-11-20T19:24:52.340 回答