我遇到了一個問題:我有一個表引用了另一個表,它有一個引用另一個表的引用列表,它有另一個引用列表,而我想要加載所有這一切。實體框架急切加載實體列表內的實體列表
基本上,這個想法是:
public class User {
public ClassL1 l1 { get; set; }
}
ClassL1 {
public List<ClassL2> l2 { get; set; }
}
ClassL2 {
public List<ClassL3> l3 { get; set; }
}
ClassL3 {
//some basic string or int values
}
而目前,我試圖用這樣的加載它,但無濟於事:
user = context.Users
.Where(u => u.UserName == model.Username)
.Include(u => u.l1)
.ThenInclude(l1 => l1.l2)
.ThenInclude(l2List => l2List.Select(l2Single => l2Single.l3))//This doesn't work
//.Include(u => u.l1.l2.Select(l2Single => l2Single.l3)) //Neither does this
.First();
我怎麼加載列表的列表,如果選擇不工作?任何幫助,將不勝感激。
編輯: 好,因爲顯然是在這個開放的錯誤,我去一個愚蠢的修復,並使其像這樣的工作:
user = context.Users
.Where(u => u.UserName == model.Username)
.Include(u => u.l1)
.ThenInclude(l1 => l1.l2)
.First();
for (int i = 0; i < user.l1.l2.Count; i++)
{
user.l1.l2[i].l3 = context.l3DB
.Where(p => p.l2.Id == user.l1.l2[i].Id)
.ToList();
}
而且這個工作,我添加引用了(給家長)。 例如:
public class ClassL2 {
public List<ClassL3> l3 { get; set; }
public ClassL1 l1 { get; set; }//reference to parent
}
似乎不起作用。我收到一個錯誤: 「在'Microsoft.Data.Entity.Query.Internal.EntityQueryable'1 [ClassL3]'和'System.Collections.Generic.List'1 [ClassL3]'類型之間沒有定義強制操作符。」 –
也許這是你映射的問題。你使用哪個版本的EF? –
「EntityFramework.Commands」:「7.0.0-rc1-final」 「EntityFramework.Core」:「7.0.0-rc1-final」 我也這麼認爲,但我找不到解決方法,有一個名字與它的名字相同,改變了這一點,但錯誤仍然存在。如果這有什麼幫助的話,我可以上傳關於這個問題的代碼片段。 –