1
我正在使用EF 7.0.0.0-rc1-final。EF核心1.0:如何查詢整棵樹?
我有一個樹結構,從GrandGrandParent一個一對多的關係,祖父母父到子:
public class GrandGrandParent
{
public int ID { get; set; }
public string Name { get; set; }
public virtual List<GrandParent> GrandParents { get; set; }
public GrandGrandParent()
{
this.GrandParents = new List<GrandParent>();
}
}
public class GrandParent
{
public int ID { get; set; }
public string Name { get; set; }
public virtual GrandGrandParent GrandGrandParent { get; set; }
public virtual List<Parent> Parents { get; set; }
public GrandParent()
{
this.Parents = new List<Parent>();
}
}
public class Parent
{
public int ID { get; set; }
public string Name { get; set; }
public virtual GrandParent GrandParent { get; set; }
public virtual List<Child> Children { get; set; }
public Parent()
{
this.Children = new List<Child>();
}
}
public class Child
{
public int ID { get; set; }
public string Name { get; set; }
public virtual Parent Parent { get; set; }
}
使用EF核心1.0(EF 7),我怎麼可以創建一個LINQ查詢(或與子查詢),給了我整棵樹,給予一個特定的盛大父母ID?
我可以。包括()上下一層,也許我是明顯的盲目?這給了我GrandGrandParent和GrandParents的列表:
var ggparent1 = from ggp in myDbContext.GrandGrandParent
.Include(ggp => ggp.GrandParents)
where ggp.ID == 2
select ggp;
我想得到整個樹,下到兒童列表。我必須求助於編寫一個foreach()循環並手動構建樹嗎?
如何設計你的數據庫?你有4桌,2或1?儘管您的層次結構很奇怪,但有多少表格可以指導我們爲您提供幫助(特別是在包含和連接時) – cdie
有4個表格,每個類別一個表格。選擇層次結構是爲了以通用方式顯示我的問題,因此讀者不必費心學習業務邏輯。我試圖對下列LINQ變化: 變種gparents從GP =在myDbContext.GrandParent .INCLUDE(gparent => gparent.GrandGrandParent) .INCLUDE(gparent => gparent.Parents) .ThenInclude(孩子=>兒童.Select(child => child.ID)) 其中gp.GrandGrandParent.ID == 2 select gp;但是。然後包含總是拋出一個異常。 –
什麼是例外? – cdie