Linq-to-entities Include方法不加载相关记录

时间:2009-06-10 05:26:43

标签: c# linq .net-3.5 linq-to-entities

我的数据库中有3个表:InvoiceDetailLineType,InvoicingCategory,CalculationRule。

InvoiceDetailLineType具有InvoicingCategory和CalculationRule的外键。

我想检索给定类别的所有InvoiceDetailLineType对象的列表,并包含相关的CalculationRule和InvoicingCategory对象。

这是我的方法:

public List<InvoiceDetailLineType> GetAllForCategory(InvoicingCategory category)
{
    return (from InvoiceDetailLineType lineType in ContextHelper.Entities.InvoiceDetailLineType.Include("CalculationRule").Include("InvoicingCategory")
            where lineType.InvoicingCategory.IdInvoicingCategory == category.IdInvoicingCategory
            select lineType).ToList();
}

我希望这能给我我需要的东西,但我得到的是一个其CalculationRule为null的对象。我确保外键都设置正确,并且记录存在于数据库中,所以看起来有点奇怪。

我错过了什么吗?

提前致谢。

2 个答案:

答案 0 :(得分:3)

好的,我找到了解决方案:

public List<InvoiceDetailLineType> GetAllForCategory(InvoicingCategory category)
{
    ObjectQuery<InvoiceDetailLineType> lineTypeQuery = ContextHelper.Entities.InvoiceDetailLineType.Include("CalculationRule").Include("InvoicingCategory");
    return lineTypeQuery.Where(t => t.InvoicingCategory.IdInvoicingCategory == category.IdInvoicingCategory).ToList();
}

仍然不太确定为什么我的初始代码不起作用,如果有人为了完整起见可以说清楚,我会很感激。

答案 1 :(得分:0)