2009-02-17 84 views

回答

3

是的,我相信它的確如此。它還具有「加載」功能/語義,允許您使用霰彈槍方式批量加載多件事物。當你知道你需要相關數據以及主要實體時,這很有用,就像預先緩存渲染單個網頁所需的所有數據一樣。

3

是的,延遲加載是默認啓用的。檢查出this article

12

這取決於您如何定義「延遲加載」。

如果你說

var person = (from p in db.People 
       where p.PersonId = pid 
       select p).First(); 
var spouse = person.Spouse; // based on the SpouseId FK 
           // back into the People table. 

那麼這將是精確的「lazying裝載」的,直到它被引用的第二個目的是不會從數據庫中抽取。但是,這將需要兩個數據庫查詢。

但是,如果你說了,

var family = (from p in db.People 
       where p.PersonId = pid 
      select new 
       { 
       Name = p.Name, 
       SpouseName = p.Spouse.Name 
       }).First(); 

隨後的LINQ將自動進行連接,並在一個單一的數據庫查詢負載從兩個記錄的信息。

相關問題