问题描述
我想实现一个评论系统,这是我的评论实体。
public class Comment
{
public int CommentId { get; set; }
public int? ParentId { get; set; }
public string Content { get; set; }
public DateTimeOffset DateCreated { get; set; }
public DateTimeOffset DateModified { get; set; }
public Comment Parent { get; set; }
public ICollection<Comment> Children { get; set; }
}
这是我在Fluent API中的配置
protected override void OnModelCreating(ModelBuilder modelBuilder)
{
base.OnModelCreating(modelBuilder);
modelBuilder.Entity<Comment>(comment =>
{
comment.HasKey(c => c.CommentId);
comment.HasIndex(c => c.ParentId);
comment.HasOne(c => c.Parent)
.WithMany(c => c.Children)
.HasForeignKey(c => c.ParentId);
});
}
一切正常,我可以使用此代码加载具有层次结构的所有记录(包括父级和子级)
List<Comment> comments = await _db.Comments.Include(c => c.Children)
.ToListAsync();
但是此代码加载所有元素,例如子元素。但是我想让所有的父母,然后是他们的孩子,然后是大孩子,再到...。
在这种情况下,我使用此代码
List<Comment> comments = await _db.Comments.Include(c => c.Children)
.Where(c => c.ParentId == null)
.ToListAsync();
并且此代码仅将所有父母及其子女加载,而不是大孩子,并且在层次结构中加载更多内容。
我应该如何编写此查询?
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)