我有一个'文件夹'实体的结构。每个文件夹都有一个对其父文件夹的引用,允许标准的树结构。每个文件夹也可以有一个项目集合,我们称它们为'文章'。一篇文章有一个标题和一个正文。鉴于根文件夹的ID,我想检索所有子文件夹及其文章。但是,我只想检索文章标题,而不是其正文。我打算在树视图中显示文件夹结构,并且我只想在用户选择树视图中的文章时检索完整文章。在实体框架中分层检索数据
我已经建立了像这样的关系:
public class Folder: EntityBase
{
public string Name { get; set; }
public Guid ParentId { get; set; }
[ForeignKey(nameof(ParentId))]
public Folder Parent { get; set; }
public ICollection<Folder> Folders { get; set; }
public ICollection<Article> Articles { get; set; }
}
public class Article : EntityBase
{
public Guid FolderId { get; set; }
[ForeignKey(nameof(FolderId))]
public Folder Folder { get; set; }
// this needs to appear in the list
public string Title { get; set; }
// potentially large amount of data, retrieve only as necessary
public string Body { get; set; }
...
}
我想不通的是如何跟实体框架递归遍历所有子文件夹及其子文件夹等。我必须在我的代码中实现递归吗?这似乎有点低效。有没有一种首选的方法来处理这个问题? 另外,我如何检索我的文章的标题字段,而不是整个身体?
LINQ +递归...再次。 –
您能否详细说明该评论?我不确定它的意图。 – Shaggydog
用一点点的双关语我试着说,关于LINQ和递归的问题被一次又一次地问到。对不起,让一些玩世不恭的人变得更好。没有什么灵丹妙药,开箱后肯定没有单行的说法。 –