我有一個id和parentId列的表,嵌套級別只是1(現在)。
現在我加載項是這樣的:Linq到實體和分層表
using (KEntities ctx = new KEntities())
{
ctx.KSet.MergeOption = MergeOption.NoTracking;
var items = (from c in ctx.KSet
where c.ParentId == 0
select new
{
Title = c.Title,
Id = c.Id,
Subs = ctx.KSet.Where(o => o.ParentId == c.Id)
}).ToList();
}
,我可以選擇另一種選擇是設置在桌子上自我參照,所以實體會暴露自身的導航性能,然後我可以將負載( )加載孩子(延遲加載?)。
哪種方法是首選,爲什麼?
所以我想返回一個不同類型的孩子(添加一些自定義屬性,如計數或類似)我應該留在我上面寫的東西?關於包含(「兒童」)的 – anderi
。我沒有孩子實體!它是同一個實體! – anderi
那麼,如果你需要任何特殊的計算/未映射的領域,你需要一個投影,在這種情況下,什麼更好的問題沒有意義,因爲你只有一個選項。 「兒童」不是一個實體,它是包含其子女名單的實體的導航屬性。 –