2011-05-10 54 views
9

我使用EF代碼第一次和我有,我想急於加載每個呼叫導航屬性稱爲分類:強制渴望加載的導航屬性

public class Product 
{ 
    ... 
    public Category Category { get; set; } 
} 

要做到這一點,我必須把它列入在每一個電話,我會做產品

var results = from p in db.Products.Include("Category") select p; 

有沒有辦法有類別屬性渴望加載,因此生成SQL連接,在每次調用,而不必每次都包括嗎?

謝謝

+0

你是否想要禁用整個上下文的延遲加載或只是這些特定的實體? – 2011-05-10 19:42:32

回答

1

您可以使用@jeroenh提出的helper方法,但它不會sol在這種情況下,您想要加載所有訂購產品及其類別的訂單。 EF沒有任何自動加載配置,例如在Linq-to-sql中可用。您必須始終使用Include(直接或通過一些幫助器構造)。

3

一個簡單的方法是定義一個擴展方法

static class DbExtensions{ 
    public IQueryable<Product> ProductsWithCategories(this MyContext db) { 
     return db.Products.Include("Category"); 
    } 
} 

,它允許您使用

var results = from p in db.ProductsWithCategories() select p; 

不知道它是否能帶來多大的好處,雖然...

+0

我雖然關於這一點,但我想知道是否有一個標準的方式,通過流暢的API的數據註釋,總是急於加載:) – 2011-05-10 20:04:56