EF Code first急切加载问题

3

我有两个实体处于1:n关系:类别和产品。

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; }
}

我希望通过急加载来加载每个类别中的产品。
context.Categories.Include(c=>c.Products)

但是Include不会加载任何导航属性。它只接受一个名为"path"的字符串类型参数。

1个回答

7

你是否缺少了 using 呢?在 VS 2010 中,有时你需要明确地添加:

using System.Data.Entity 

..获取lambda包括选项可用。

它不会提示您添加它,因为它已经具有基于字符串的Include定义,可在下面找到

System.Linq

.Include(x => x.MyObject) 实际上是现有linq方法的一个新扩展方法。


1
我无法为此点赞足够,因为似乎这并不是众所周知的。我曾以为唯一的急切加载方式是使用字符串,而字符串会导致某些内容无法正确地急切加载。 - KallDrexx
谢谢!我同意。看起来有点让人失望,因为我们费了很大的力气将所有内容都强制类型化,然后却用字符串引用它(也就是说,让运行时错误出现):) - Gats

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接