在 ASP.NET MVC (4) 应用程序中使用 RavenDB,加载一组相关实体并将它们传递给视图的正确模式是什么?
以 Stack Overflow 为例,假设有以下实体:
class User
{
public int Id { get; set; }
public string UserName { get; set; }
}
class Comment
{
public int Id { get; set; }
public string Body { get; set; }
public string Author{ get; set; }
}
class Question
{
public int Id { get; set; }
// ...
public List<Comment> Comments { get; set; }
public Question()
{
Comments = new List<Comment>();
}
}
我们要做的是在问题下的评论旁边显示用户信息,评论作为问题文档的一部分存储,所以Include
我们Comment.Author
我们的查询可能如下所示:
var question = RavenSession.Include<Question>(x => x.Author)
.Include<Comment>(x => x.Author)
.Load<Question>(id);
现在我们有了包含所有评论的问题对象,并且 Raven 客户端已经缓存了我们需要的所有用户配置文件,将用户对象与相关评论对象配对的正确/最佳/最 RavenDB 认可的方法是什么?
一个想法是我可以将User
andComment
转换为 aCommentViewModel
并将其发送给客户端,但这似乎很手动。
另一种选择是Comment
为作者添加另一个属性,即[JsonIgnore]
'd 和在 getter 中,从 Raven 会话延迟加载用户。这感觉很脏,因为 Comment 模型对象需要保存对 raven 会话的引用。