【问题标题】:EF: The Include path expression must refer to a navigation property defined on the typeEF:包含路径表达式必须引用在类型上定义的导航属性
【发布时间】:2017-09-28 13:02:27
【问题描述】:
var context = context.MyEntity
.include(e => e.something)
.Include(e => e.scoring
    .Select(sc=>sc.scoring_parameters
        //This is problem
        .Where(scp =>scp.scoring_id == sc.scoring_id)
        .Select(scp =>scp.cis_scoring_parameters.cis_scoring_parameters_tabs)))
.include(e => e.something_else)
.FirstOrDefault(e => e.id  == _id);

where 子句给出错误“包含路径表达式必须引用在类型上定义的导航属性。”我见过有这个错误的帖子,但它们不适合这个。我不知道如何以正确的方式编写我的 lambda。有人可以帮忙吗?

【问题讨论】:

  • 如果 scoring_id 是从 scoring_parameterscoring 的 FK 并且您正确配置了映射,则 where 子句是多余的。试试不带 where 部分。

标签: c# .net entity-framework


【解决方案1】:

您不能像这样过滤包含中的数据。 Include 用于告诉 EntityFramework 要加载哪些数据。如果scoring_parameters.scoring_idscoring.scoring_id 相互关联,那么您可以尝试以下操作:

var context = context.MyEntity
    .include(e => e.something)
    .Include(e => e.scoring
        .Select(sc=>sc.scoring_parameters.Select(scp => scp.cis_scoring_parameters.cis_scoring_parameters_tabs)))
    .include(e => e.something_else)
    .FirstOrDefault(e => e.id  == _id);

我想scp.cis_scoring_parameters.cis_scoring_parameters_tabs 也是一个导航属性。

【讨论】:

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