Dot-Net

EF LINQ 包括多個和嵌套的實體

  • April 2, 2013

好的,我有具有以下層次結構的三級實體:課程->模組->章節

這是原始的 EF LINQ 語句:

Course course = db.Courses
               .Include(i => i.Modules.Select(s => s.Chapters))
               .Single(x => x.Id == id); 

現在,我想包含另一個與課程相關聯的名為 Lab 的實體。

如何包含 Lab 實體?

我嘗試了以下但沒有奏效:

Course course = db.Courses
               .Include(i => i.Modules.Select(s => s.Chapters) && i.Lab)
               .Single(x => x.Id == id); 

關於包括第二個實體的任何想法?

任何建議或資訊將不勝感激。謝謝!

您是否嘗試過添加另一個Include

Course course = db.Courses
               .Include(i => i.Modules.Select(s => s.Chapters))
               .Include(i => i.Lab)
               .Single(x => x.Id == id);

您的解決方案失敗,因為Include不採用布爾運算符

Include(i => i.Modules.Select(s => s.Chapters) &&          i.Lab)
                          ^^^                  ^             ^ 
                         list           bool operator    other list

更新 要了解更多資訊,請下載LinqPad並查看範例。我認為這是熟悉 Linq 和 Lambda 的最快方法。

Select首先 -和之間的區別在於Include,使用 Select 您可以決定返回的內容(也稱為投影)。Include 是一個Eager Loading函式,它告訴 Entity Framework 您希望它包含來自其他表的數據。

Include 語法也可以是字元串。像這樣:

          db.Courses
           .Include("Module.Chapter")
           .Include("Lab")
           .Single(x => x.Id == id);

LinqPad中的範例更好地解釋了這一點。

引用自:https://stackoverflow.com/questions/15764572