【问题标题】:The Include path expression must refer to a navigation property defined on the type.in eager loading包含路径表达式必须引用 type.in 预加载中定义的导航属性
【发布时间】:2016-07-30 16:22:17
【问题描述】:

我尝试包含这样的匿名类型: 除了CompanyTitle ,PeriodTypeName 之外,我还想要所有incomelist 属性)

 var incomeList = ctx.IncomeLists.Include(i => new
                {
                    CompanyTitle = i.CompanyId.ToString() + "/" + i.Company.CompanyName,
                    PeriodTypeName = i.ListPeriods.Select(lp => lp.PeriodType.PeriodTypeName)
                }).ToList()

我的模型部分是这样的:

但我得到以下异常:

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

结果应该是 Gridview 的数据源。

【问题讨论】:

标签: c# asp.net entity-framework linq entity-framework-6


【解决方案1】:

您不能使用 Include 来选择这样的数据。 Include 用于加载相关数据。您应该使用 Include 加载您的实体,然后选择您想要的。请记住从 CompanyId 中删除 .ToString()。 EF 会为你做这件事。您的查询应如下所示:

var incomeList = ctx.IncomeLists
    .Include(i => i.Company)
    .Include(i => i.ListPeriods.Select(lp => lp.PeriodType))
    .Select(i => new 
    {
        CompanyTitle =  i.CompanyId + "/" + i.Company.CompanyName,
        PeriodTypeNames = i.ListPeriods.Select(lp => lp.PeriodType.PeriodTypeName)
    })
    .ToList();

【讨论】:

    猜你喜欢
    • 2019-05-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-04-05
    • 1970-01-01
    相关资源
    最近更新 更多