【发布时间】:2016-12-06 03:32:08
【问题描述】:
我使用的是 .NET Core 1.1.0、EF Core 1.1.0、VS 2015。
我正在为帖子/cmets 编写一个系统,我需要一个函数来加载评论及其所有子项及其相关属性。这是我的课程的简化版本:
public class Comment
{
public long Id { get; set; }
public string Content { get; set; }
public User User { get; set; }
public ICollection<Comment> Replies { get; set; }
}
public class User
{
public long Id { get; set; }
public string Name { get; set; }
public Avatar Avatar { get; set; }
}
public class Avatar
{
public string Url { get; set; }
}
任何给定的评论都可以有任意数量的回复:
-PARENT
-CHILD 1
-CHILD 2
-CHILD 3
-CHILD 4
-CHILD 5
-CHILD 6
-CHILD 7
因此,给定父评论的 ID,我需要加载整个树,包括用户及其各自的头像。 (我在其他地方进行了控制,以确保这些树不会变得笨拙,此时我并不担心可能会获取太多数据。)
EF Core 文档中的Loading Related Data 页面非常有用,但我不确定如何最好地处理这个问题。我已经尝试将一些东西放在一起,但我无法概念化如何将它们组合在一起。再次注意:我使用的是 EF Core 1.1.0,因此我可以访问“显式加载”部分中的函数。
如何在给定父评论 ID 的情况下加载整个 cmets 树?
【问题讨论】:
-
每个孩子到数据库的往返行程可能非常重要。使用 SQL 进行递归 CTE 并让 EF 映射结果可能会更好。
-
@ESG 我以前从未听说过 CTE,在阅读了它们之后,它看起来可能是完美的。我再仔细看看,谢谢!
标签: c# entity-framework asp.net-core entity-framework-core