假设我需要为 StackOverflow 实现域模型。
如果我在做 ORM,我如何定义(和映射)属性来获取“最后的评论”和其他“最后”的东西?在我看来,这应该反映在域模型中。
有时我可能需要“所有评论”...
假设我需要为 StackOverflow 实现域模型。
如果我在做 ORM,我如何定义(和映射)属性来获取“最后的评论”和其他“最后”的东西?在我看来,这应该反映在域模型中。
有时我可能需要“所有评论”...
我可能会受到我的 ORM 工具的影响,但我认为这是一个查询而不是域属性。域包含关联,存储库封装查询,例如您所描述的查询。
您将查询您的存储库以获取特定用户的最后评论。就像是
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 条评论,你就会有相当多的开销。