2011-04-30 48 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