在Entity Framework中的ICollection上使用Include

时间:2013-07-22 15:50:51

标签: entity-framework-5

以下是我的数据模型示例:

class Invoice
{
    public ICollection<LineItem> LineItems { get; set; }
}

class LineItem
{
    public string Text { get; set; }
    public Invoice Invoice { get; set; }
    public Category Category { get; set; }
}

class Category
{
    public string Name { get; set; }
}

我可以像这样急切加载LineItem:

return DataContext.Invoices.First().Include("LineItems.Category");

如何使用Lambda执行此操作?

return DataContext.Invoices.First().Include(li => li.LineItems); //I can't chain any more includes since LineItems is an ICollection

修改: 我试过了

return DataContext.Invoices.Include(i => i.LineItems.First().Category).Single();

并产生ArgumentException,其中包含以下消息:

  

Include路径表达式必须引用导航属性   在类型上定义。使用虚线路径进行参考导航   属性和集合导航的Select运算符   属性。参数名称:路径

2 个答案:

答案 0 :(得分:2)

我刚刚尝试了以下内容,它似乎运作正常:

return DataContext.Invoices.Include(i => i.LineItems.Select(li => li.Category)).Single();

答案 1 :(得分:0)

试试这个

return DataContext.Invoices.Include(li => li.LineItems).First();