EF内に自己参照階層があります。階層自体を表すエンティティがあります。このエンティティは、階層自体のエントリと1対多の関係を持ちます。ここでEF - 各階層要素が単一のエンティティを参照する自己参照階層を効率的に読み込みます。
は(多少省略さ)のクラスです:
[Table("Hierarchies")]
public class Hierarchy
{
public Hierarchy()
{
Entries = new List<HierarchyEntry>();
}
public int Id { get; set; }
public string Name { get; set; }
public virtual ICollection<HierarchyEntry> Entries { get; set; }
}
[Table("HierarchyEntries")]
public class HierarchyEntry
{
public HierarchyEntry()
{
Children = new List<HierarchyEntry>();
}
public int Id { get; set; }
[ForeignKey("Hierarchy")]
public int HierarchyId { get; set; }
[ForeignKey("Parent")]
public int? ParentId { get; set; }
public string Name { get; set; }
public CostCenterHierarchy Hierarchy { get; set; }
public CostCenterHierarchyEntry Parent { get; set; }
public virtual ICollection<HierarchyEntry> Children { get; set; }
}
データベースの観点から、私は明らかに単一のクエリでの階層メンバーを得ることができます。しかし、私が階層を下降するにつれて、私はEFがそのレベルの子供をデータベースに絶えず照会しているのを見ることができます。
状況はEFにとって珍しい使用例なので、階層を幸せにするために少し作業をする必要はありませんが、子供と一緒に作業するたびに質問することはできません。
この状況についてEFに指示する方法はありますか?私はデータベースのハンマーを止めることができますか?