EntityFramework包含(Eager Load)虚拟属性的虚拟属性

时间:2017-04-14 10:53:39

标签: c# asp.net asp.net-mvc entity-framework

想象一下,我们有三个Dbset,如下所示:

Category
{
...
   public virtual ICollection<Item> Items {get; set;}
...
}

Item
{
...
   public virtual ICollection<Specification> Specifications{get; set;}
...
}

Specification
{
...
}

对于急切加载,我使用它:

Category cat = db.Categories.Include(c=> c.Items).FirstOrDefault(c=> c.Id == 1);

但现在的问题是

cat.Items[0].Specificationsnull,我们怎样才能让它急切加载集合的子集合?

P.S。:我尝试删除virtual关键字进行测试(我不想删除它),但它也没有用。

3 个答案:

答案 0 :(得分:8)

{{1}}

答案 1 :(得分:8)

您也可以使用符号

db.Categories.Include("Items.Specifications")

注意它必须是一个字符串

答案 2 :(得分:0)

现在我们也可以使用:

db.Categories.Include(c => c.Items)
             .ThenInclude(i => i.Specifications);