例外:必须是Entity Core中的可还原节点

时间:2018-01-07 14:09:57

标签: c# entity-framework linq

当我尝试“连接”使用导航属性的多个IQueryable where子句时,我在Entity Core 1.1.0中遇到异常。

简单示例(不是我的实际代码):

 public List<ProjectSummaryDto> TestRelation(string s)
    {
            var query = _context.TechnologicallyProject
            .WhereIf(! string.IsNullOrWhiteSpace(s), q => q.Document.Title.Contains(s))
            .ProjectTo<ProjectSummaryDto>();

        return query.ToList();  //Exception Message: must be reducible node
    }

堆栈追踪:

  

在System.Linq.Expressions.Expression.ReduceAndCheck()处   System.Linq.Expressions.Expression.ReduceExtensions()at   System.Linq.Expressions.Compiler.StackSpiller.RewriteExtensionExpression(表达式   expr,Stack stack)....

但是,当它包含(标题)到Equlas(id)时它会发生变化,它可以正常工作

 public List<ProjectSummaryDto> TestRelation(int s)
    {

        var query = _context.TechnologicallyProject
            .WhereIf(s != 0 , q => q.Document.Id.Equals(s))
            .ProjectTo<ProjectSummaryDto>();

        return query.ToList();
    }

1 个答案:

答案 0 :(得分:1)