admin管理员组

文章数量:1550649

本文由 比特飞 原创发布,欢迎大家踊跃转载。

转载请注明本文地址:“Mvc.ExceptionHandling.AbpExceptionFilter – Processing of the LINQ expression ‘xxx’ by ‘NavigationExpandingExpressionVisitor’ failed. This may indicate either a bug or a limitation in EF Core.”的解决方案 | .Net中文网

描述

最近在使用 efcore 连接 mysql 数据库进行排序时,遇到如下的报错信息:

ERROR 2020-06-08 20:44:00,617 [4 ] Mvc.ExceptionHandling.AbpExceptionFilter - Processing of the LINQ expression 'DbSet<xxx>

.OrderBy( => .Id)

.Reverse()' by 'NavigationExpandingExpressionVisitor' failed. This may indicate either a bug or a limitation in EF Core. See https://go.microsoft/fwlink/?linkid=2101433 for more detailed information.

System.InvalidOperationException: Processing of the LINQ expression 'DbSet<xxx>

.OrderBy( => .Id)

.Reverse()' by 'NavigationExpandingExpressionVisitor' failed. This may indicate either a bug or a limitation in EF Core. See https://go.microsoft/fwlink/?linkid=2101433 for more detailed information.

at Microsoft.EntityFrameworkCore.Query.Internal.NavigationExpandingExpressionVisitor.VisitMethodCall(MethodCallExpression methodCallExpression)

at System.Linq.Expressions.MethodCallExpression.Accept(ExpressionVisitor visitor)

at Microsoft.EntityFrameworkCore.Query.Internal.NavigationExpandingExpressionVisitor.VisitMethodCall(MethodCallExpression methodCallExpression)

at System.Linq.Expressions.MethodCallExpression.Accept(ExpressionVisitor visitor)

at Microsoft.EntityFrameworkCore.Query.Internal.NavigationExpandingExpressionVisitor.VisitMethodCall(MethodCallExpression methodCallExpression)

at System.Linq.Expressions.MethodCallExpression.Accept(ExpressionVisitor visitor)

at Microsoft.EntityFrameworkCore.Query.Internal.NavigationExpandingExpressionVisitor.Expand(Expression query)

at Microsoft.EntityFrameworkCore.Query.QueryTranslationPreprocessor.Process(Expression query)

at Microsoft.EntityFrameworkCore.Query.QueryCompilationContext.CreateQueryExecutor[TResult](Expression query)

at Microsoft.EntityFrameworkCore.Storage.Database.CompileQuery[TResult](Expression query, Boolean async)

at Microsoft.EntityFrameworkCore.Query.Internal.QueryCompiler.CompileQueryCore[TResult](IDatabase database, Expression query, IModel model, Boolean async)

at Microsoft.EntityFrameworkCore.Query.Internal.QueryCompiler.<>c__DisplayClass12_0<code data-enlighter-language="generic" class="EnlighterJSRAW">1.<ExecuteAsync>b__0()

at Microsoft.EntityFrameworkCore.Query.Internal.CompiledQueryCache.GetOrAddQueryCore[TFunc](Object cacheKey, Func</code>1 compiler)

at Microsoft.EntityFrameworkCore.Query.Internal.CompiledQueryCache.GetOrAddQuery[TResult](Object cacheKey, Func<code data-enlighter-language="generic" class="EnlighterJSRAW">1 compiler)

at Microsoft.EntityFrameworkCore.Query.Internal.QueryCompiler.ExecuteAsync[TResult](Expression query, CancellationToken cancellationToken)

at Microsoft.EntityFrameworkCore.Query.Internal.EntityQueryProvider.ExecuteAsync[TResult](Expression expression, CancellationToken cancellationToken)

at Microsoft.EntityFrameworkCore.Query.Internal.EntityQueryable</code>1.GetAsyncEnumerator(CancellationToken cancellationToken)

at System.Runtime.CompilerServices.ConfiguredCancelableAsyncEnumerable<code data-enlighter-language="generic" class="EnlighterJSRAW">1.GetAsyncEnumerator()

at Microsoft.EntityFrameworkCore.EntityFrameworkQueryableExtensions.ToListAsync[TSource](IQueryable</code>1 source, CancellationToken cancellationToken)

at lambda_method(Closure , Object )

at Microsoft.Extensions.Internal.ObjectMethodExecutorAwaitable.Awaiter.GetResult()

at Microsoft.AspNetCore.Mvc.Infrastructure.ActionMethodExecutor.AwaitableObjectResultExecutor.Execute(IActionResultTypeMapper mapper, ObjectMethodExecutor executor, Object controller, Object[] arguments)

at Microsoft.AspNetCore.Mvc.Infrastructure.ControllerActionInvoker.<InvokeActionMethodAsync>g__Awaited|12_0(ControllerActionInvoker invoker, ValueTask`1 actionResultValueTask)

at Microsoft.AspNetCore.Mvc.Infrastructure.ControllerActionInvoker.<InvokeNextActionFilterAsync>g__Awaited|10_0(ControllerActionInvoker invoker, Task lastTask, State next, Scope scope, Object state, Boolean isCompleted)

at Microsoft.AspNetCore.Mvc.Infrastructure.ControllerActionInvoker.Rethrow(ActionExecutedContextSealed context)

at Microsoft.AspNetCore.Mvc.Infrastructure.ControllerActionInvoker.Next(State& next, Scope& scope, Object& state, Boolean& isCompleted)

at Microsoft.AspNetCore.Mvc.Infrastructure.ControllerActionInvoker.InvokeInnerFilterAsync()

--- End of stack trace from previous location where exception was thrown ---

at Microsoft.AspNetCore.Mvc.Infrastructure.ResourceInvoker.<InvokeNextExceptionFilterAsync>g__Awaited|25_0(ResourceInvoker invoker, Task lastTask, State next, Scope scope, Object state, Boolean isCompleted)

解决

发生这个问题的原因是配合 OrderBy 使用 Queryable.Reverse<TSource>(IQueryable<TSource>) 方法尝试获取倒序结果集时,抛出了一个“无效的操作”异常。解决方法就是直接使用 OrderByDescending。

本文由 比特飞 原创发布,欢迎大家踊跃转载。

转载请注明本文地址:“Mvc.ExceptionHandling.AbpExceptionFilter – Processing of the LINQ expression ‘xxx’ by ‘NavigationExpandingExpressionVisitor’ failed. This may indicate either a bug or a limitation in EF Core.”的解决方案 | .Net中文网

本文标签: AbpExceptionFilterprocessingMVCExceptionHandlingxxx