2011-04-30 73 views
3

我有兩個1:n關係的實體:Category和Product。EF代碼第一次急切加載問題

public class Category 
{ 
    public int CategoryID { get; set; } 
    public string CategoryName { get; set; } 

    public virtual ICollection<Product> Products { get; set; } 
} 

public class Product 
{ 
    public int ProductID { get; set; } 
    public string ProductName { get; set; } 

    public virtual Product { get; set; } 
} 

public class context : DbContext 
{ 
    public DbSet<Category> Categories { get; set; } 
    public DbSet<Product> Products { get; set; } 
} 

我想通過Eager加載加載各個類別的產品。

context.Categories.Include(c=>c.Products) 

但包括不加載任何導航屬性。它只接受一個稱爲「路徑」類型字符串的參數。

回答

7

您是否缺少使用? VS 2010是在這一個有點啞,你往往要明確提出的:

using System.Data.Entity 

..to獲得拉姆達包括可用選項。

它不會提示您添加它,因爲它已經有包括下

System.Linq 

.INCLUDE基於字符串的定義可用(X => x.MyObject)實際上是在一個新的擴展方法現有的linq方法。

+1

我不能滿足,因爲它似乎這不是衆所周知的。我認爲急於加載的唯一方法是使用字符串,並且字符串導致問題不正確加載 – KallDrexx 2011-06-22 14:10:10

+0

謝謝!我同意。看起來有點讓人失望,所有的麻煩都要強制類型化,然後用一個字符串引用它(即引發運行時錯誤):) – Gats 2011-06-22 19:29:06