I upgraded to from EFCore 3 to EFCore 6 and I get this error must be reducible node.
I use Postgresql has my database.
The error come from the Compile statement:
private IQueryable<T> ApplyFilter(IQueryable<T> query, string rawFilter, ODataQueryOptionParser oDataQueryOptionParser, ODataQueryContext oDataQueryContext)
{
FilterQueryOption filter = new FilterQueryOption(rawFilter, oDataQueryContext, oDataQueryOptionParser);
var queryable = filter.ApplyTo(query, new ODataQuerySettings());
var visitor = new CaseInsensitiveAccentSensitiveExpressionVisitor();
var queryExpression = queryable.Expression;
var visitExpression = visitor.Visit(queryExpression);
queryable = (IQueryable)Expression.Lambda(visitExpression).Compile().DynamicInvoke();
return (IQueryable<T>)queryable;
}
At first I thought it was in my CaseInsensitiveAccentSensitiveExpressionVisitor class but,
the thing is, even if my CaseInsensitiveAccentSensitiveExpressionVisitor only call base functions whitout any more codre, I still get this error.
public class CaseInsensitiveAccentSensitiveExpressionVisitor : ExpressionVisitor
{
protected override Expression VisitMethodCall(MethodCallExpression node)
{
return base.VisitMethodCall(node);
}
protected override Expression VisitMember(MemberExpression node)
{
return base.VisitMember(node);
}
}
The CaseInsensitiveAccentSensitiveExpressionVisitor is suppose to add ToLower to string fields so filter are case Insensitive.
Use
query.Provider.CreateQuery<>(..)for generatingIQueryable<>with corrected expression.