efcore: ArgumentOutOfRangeException when ordering by a constant in collection include

Dear, first, excuse my English.

I found a similar error.

Follow steps to simuate:

var query = db.Person
.Include(p => p.PersonType)
.ThenInclude(pt => pt.Type)
.Include(a => a.PersonAddress)
.Where(p => p.Active)
.GroupBy(p => new { item = 1 }); // => THROW EXCEPTION INDEX OUT OF RANGE

I’m using EF 2.0.1 version Stack

em System.ThrowHelper.ThrowArgumentOutOfRangeException(ExceptionArgument argument, ExceptionResource resource) em Microsoft.EntityFrameworkCore.Query.Expressions.SelectExpression.BindSubqueryProjectionIndex(Int32 projectionIndex, IQuerySource querySource) em Microsoft.EntityFrameworkCore.Query.ExpressionVisitors.SqlTranslatingExpressionVisitor.VisitMethodCall(MethodCallExpression methodCallExpression) em System.Linq.Expressions.MethodCallExpression.Accept(ExpressionVisitor visitor) em Remotion.Linq.Parsing.ThrowingExpressionVisitor.Visit(Expression expression) em Microsoft.EntityFrameworkCore.Query.ExpressionVisitors.SqlTranslatingExpressionVisitor.Visit(Expression expression) em Microsoft.EntityFrameworkCore.Query.RelationalQueryModelVisitor.VisitOrderByClause(OrderByClause orderByClause, QueryModel queryModel, Int32 index) em Remotion.Linq.Clauses.OrderByClause.Accept(IQueryModelVisitor visitor, QueryModel queryModel, Int32 index) em Remotion.Linq.QueryModelVisitorBase.VisitBodyClauses(ObservableCollection1 bodyClauses, QueryModel queryModel) em Remotion.Linq.QueryModelVisitorBase.VisitQueryModel(QueryModel queryModel) em Microsoft.EntityFrameworkCore.Query.EntityQueryModelVisitor.VisitQueryModel(QueryModel queryModel) em Microsoft.EntityFrameworkCore.Query.RelationalQueryModelVisitor.VisitQueryModel(QueryModel queryModel) em Microsoft.EntityFrameworkCore.Query.ExpressionVisitors.RelationalEntityQueryableExpressionVisitor.VisitSubQuery(SubQueryExpression expression) em Remotion.Linq.Clauses.Expressions.SubQueryExpression.Accept(ExpressionVisitor visitor) em System.Linq.Expressions.ExpressionVisitor.Visit(Expression node) em Microsoft.EntityFrameworkCore.Query.ExpressionVisitors.ExpressionVisitorBase.VisitLambda[T](Expression1 node) em System.Linq.Expressions.Expression1.Accept(ExpressionVisitor visitor) em System.Linq.Expressions.ExpressionVisitor.Visit(Expression node) em System.Linq.Expressions.ExpressionVisitor.VisitArguments(IArgumentProvider nodes) em System.Linq.Expressions.ExpressionVisitor.VisitMethodCall(MethodCallExpression node) em Microsoft.EntityFrameworkCore.Query.ExpressionVisitors.RelationalEntityQueryableExpressionVisitor.VisitMethodCall(MethodCallExpression node) em System.Linq.Expressions.MethodCallExpression.Accept(ExpressionVisitor visitor) em System.Linq.Expressions.ExpressionVisitor.Visit(Expression node) em System.Linq.Expressions.ExpressionVisitor.VisitBlock(BlockExpression node) em System.Linq.Expressions.BlockExpression.Accept(ExpressionVisitor visitor) em System.Linq.Expressions.ExpressionVisitor.Visit(Expression node) em Microsoft.EntityFrameworkCore.Query.ExpressionVisitors.ExpressionVisitorBase.VisitLambda[T](Expression1 node) em System.Linq.Expressions.Expression1.Accept(ExpressionVisitor visitor) em System.Linq.Expressions.ExpressionVisitor.Visit(Expression node) em System.Linq.Expressions.ExpressionVisitor.VisitArguments(IArgumentProvider nodes) em System.Linq.Expressions.ExpressionVisitor.VisitMethodCall(MethodCallExpression node) em Microsoft.EntityFrameworkCore.Query.ExpressionVisitors.RelationalEntityQueryableExpressionVisitor.VisitMethodCall(MethodCallExpression node) em System.Linq.Expressions.MethodCallExpression.Accept(ExpressionVisitor visitor) em System.Linq.Expressions.ExpressionVisitor.Visit(Expression node) em Microsoft.EntityFrameworkCore.Query.EntityQueryModelVisitor.ReplaceClauseReferences(Expression expression, IQuerySource querySource, Boolean inProjection) em Microsoft.EntityFrameworkCore.Query.ResultOperatorHandler.HandleGroup(EntityQueryModelVisitor entityQueryModelVisitor, GroupResultOperator groupResultOperator, QueryModel queryModel) em Microsoft.EntityFrameworkCore.Query.ResultOperatorHandler.<>c.<.cctor>b__33_11(EntityQueryModelVisitor v, ResultOperatorBase r, QueryModel q) em Microsoft.EntityFrameworkCore.Query.ResultOperatorHandler.HandleResultOperator(EntityQueryModelVisitor entityQueryModelVisitor, ResultOperatorBase resultOperator, QueryModel queryModel) em Microsoft.EntityFrameworkCore.Query.Internal.RelationalResultOperatorHandler.HandlerContext.EvalOnClient(Boolean requiresClientResultOperator) em Microsoft.EntityFrameworkCore.Query.Internal.RelationalResultOperatorHandler.HandleGroup(HandlerContext handlerContext) em Microsoft.EntityFrameworkCore.Query.Internal.RelationalResultOperatorHandler.HandleResultOperator(EntityQueryModelVisitor entityQueryModelVisitor, ResultOperatorBase resultOperator, QueryModel queryModel) em Microsoft.EntityFrameworkCore.Query.EntityQueryModelVisitor.VisitResultOperator(ResultOperatorBase resultOperator, QueryModel queryModel, Int32 index) em Microsoft.EntityFrameworkCore.Query.RelationalQueryModelVisitor.VisitResultOperator(ResultOperatorBase resultOperator, QueryModel queryModel, Int32 index) em Remotion.Linq.QueryModelVisitorBase.VisitResultOperators(ObservableCollection1 resultOperators, QueryModel queryModel) em Remotion.Linq.QueryModelVisitorBase.VisitQueryModel(QueryModel queryModel) em Microsoft.EntityFrameworkCore.Query.EntityQueryModelVisitor.VisitQueryModel(QueryModel queryModel) em Microsoft.EntityFrameworkCore.Query.RelationalQueryModelVisitor.VisitQueryModel(QueryModel queryModel) em Microsoft.EntityFrameworkCore.Query.EntityQueryModelVisitor.CreateQueryExecutor[TResult](QueryModel queryModel) em Microsoft.EntityFrameworkCore.Storage.Database.CompileQuery[TResult](QueryModel queryModel) — Fim do rastreamento de pilha do local anterior onde a exceção foi gerada — em Microsoft.EntityFrameworkCore.Query.Internal.QueryCompiler.CompileQueryCore[TResult](Expression query, INodeTypeProvider nodeTypeProvider, IDatabase database, IDiagnosticsLogger1 logger, Type contextType) em Microsoft.EntityFrameworkCore.Query.Internal.QueryCompiler.<>c__DisplayClass15_01.b__0() em Microsoft.EntityFrameworkCore.Query.Internal.CompiledQueryCache.GetOrAddQueryCore[TFunc](Object cacheKey, Func1 compiler) em Microsoft.EntityFrameworkCore.Query.Internal.CompiledQueryCache.GetOrAddQuery[TResult](Object cacheKey, Func1 compiler) em Microsoft.EntityFrameworkCore.Query.Internal.QueryCompiler.Execute[TResult](Expression query) em Microsoft.EntityFrameworkCore.Query.Internal.EntityQueryProvider.Execute[TResult](Expression expression) em Remotion.Linq.QueryableBase1.GetEnumerator() em System.Linq.SystemCore_EnumerableDebugView1.get_Items()

About this issue

  • Original URL
  • State: closed
  • Created 6 years ago
  • Reactions: 1
  • Comments: 15 (8 by maintainers)

Commits related to this issue

Most upvoted comments

fixed in 3902d943a489107d9e2336a434ecf489376d0516

@adrianotrentim - There is already PR out with fix for this. It will be fixed in 2.1 release.

To anyone experiencing this, taking the constant out to a variable works fine:

var zero = 0;
var query = db.Person
              .Include(p => p.PersonType)
              .OrderBy(p => zero)
              .ToList();

Just make sure the variable (zero) is not a constant.