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
- Fix to #11459 - Query: incorrect data returned for queries projecting a single constant from a subquery Also fixed related issues: #10946 - ArgumentOutOfRangeException when ordering by a constant in ... — committed to dotnet/efcore by maumar 6 years ago
- Fix to #11459 - Query: incorrect data returned for queries projecting a single constant from a subquery Also fixed related issues: #10946 - ArgumentOutOfRangeException when ordering by a constant in ... — committed to dotnet/efcore by maumar 6 years ago
- Fix to #11459 - Query: incorrect data returned for queries projecting a single constant from a subquery Also fixed related issues: #10946 - ArgumentOutOfRangeException when ordering by a constant in ... — committed to dotnet/efcore by maumar 6 years ago
- Fix to #11459 - Query: incorrect data returned for queries projecting a single constant from a subquery Also fixed related issues: #10946 - ArgumentOutOfRangeException when ordering by a constant in ... — committed to dotnet/efcore by maumar 6 years ago
- Fix to #11459 - Query: incorrect data returned for queries projecting a single constant from a subquery Also fixed related issues: #10946 - ArgumentOutOfRangeException when ordering by a constant in ... — committed to dotnet/efcore by maumar 6 years ago
- Fix to #11459 - Query: incorrect data returned for queries projecting a single constant from a subquery Also fixed related issues: #10946 - ArgumentOutOfRangeException when ordering by a constant in ... — committed to dotnet/efcore by maumar 6 years ago
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:
Just make sure the variable (
zero) is not a constant.