「Folder」エンティティの構造を持っています。各フォルダには親フォルダへの参照があり、標準的なツリー構造が可能です。各フォルダにアイテムのコレクションを持たせることもできます。記事にはタイトルと本文があります。ルートフォルダのIDを指定すると、すべてのサブフォルダとその記事を取得する必要があります。しかし、私は記事のタイトルではなく、本文を取得したいと思っています。私は、ツリービューでフォルダ構造を表示するつもりで、ユーザーがツリービューで記事を選択した場合にのみ、完全な記事を取得したいと考えています。Entity Frameworkで階層的にデータを取得します
私はそうのような関係を設定している:私は把握することはできませんどのような
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と再帰に関する質問に何度も尋ねられたと言っていました。冷笑のビットが私のより良いを得るために申し訳ありません。魔法の弾丸はありません。確かに、一行の声明はありません。 –