【问题标题】:Linq-to-entities Include method doesn't load related recordsLinq-to-entities Include 方法不加载相关记录
【发布时间】:2010-11-01 16:59:17
【问题描述】:

我的数据库中有 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 为空的对象。我已经确保外键都设置正确并且记录存在于数据库中,所以看起来有点奇怪。

我错过了什么吗?

提前致谢。

【问题讨论】:

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


    【解决方案1】:

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

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

    仍然不太清楚为什么我的初始代码不起作用,如果有人可以为完整性起见提供一些说明,我将不胜感激。

    【讨论】:

    • 更新:我还发现原始代码可以工作,只要我没有将“lineType”的类型明确指定为 InvoiceDetailLineType。现在我想知道为什么会这样:)
    【解决方案2】:
    猜你喜欢
    • 1970-01-01
    • 2013-10-23
    • 1970-01-01
    • 2011-03-12
    • 1970-01-01
    • 1970-01-01
    • 2015-08-25
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多