Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Processing of the LINQ expression '' by 'NavigationExpandingExpressionVisitor' failed #21727

Closed
linsmod opened this issue Jul 22, 2020 · 1 comment

Comments

@linsmod
Copy link

linsmod commented Jul 22, 2020

error when doing a GroupJoin operation:

Processing of the LINQ expression 'DbSet
.GroupJoin(
outer: DbSet,
inner: x => x.ConvId,
outerKeySelector: x => x.Id,
innerKeySelector: (x, y) => new {
Table1 = x,
Table2 = y
.DefaultIfEmpty()
.AsQueryable()
.FirstOrDefault()
})' by 'NavigationExpandingExpressionVisitor' failed. This may indicate either a bug or a limitation in EF Core. See https://go.microsoft.com/fwlink/?linkid=2101433 for more detailed information.

Steps to reproduce

        internal List<Model.ChatMessage> GetMessages(long visitorId, int channelId, int page, int size)
        { 
            return db.ChatMessages
                .GroupJoin(db.Conversations,x=>x.ConvId,x=>x.Id, (x, y) => new { Table1 = x, Table2 = y.DefaultIfEmpty().FirstOrDefault() })
                .OrderByDescending(x => x.Table1.SendTime)
                .Where(x => x.Table2 != null)
                .Where(x => x.Table2.ChannelId == channelId)
                .Where(x => x.Table1 .VisitorId == visitorId)
                .Select(x=>x.Table1)
                .ToPagedList(page, size);
     }

======================

   at Microsoft.EntityFrameworkCore.Query.Internal.NavigationExpandingExpressionVisitor.VisitMethodCall(MethodCallExpression methodCallExpression)
   at System.Linq.Expressions.MethodCallExpression.Accept(ExpressionVisitor visitor)
   at System.Linq.Expressions.ExpressionVisitor.Visit(Expression node)
   at Microsoft.EntityFrameworkCore.Query.Internal.NavigationExpandingExpressionVisitor.VisitMethodCall(MethodCallExpression methodCallExpression)
   at System.Linq.Expressions.MethodCallExpression.Accept(ExpressionVisitor visitor)
   at System.Linq.Expressions.ExpressionVisitor.Visit(Expression node)
   at Microsoft.EntityFrameworkCore.Query.Internal.NavigationExpandingExpressionVisitor.VisitMethodCall(MethodCallExpression methodCallExpression)
   at System.Linq.Expressions.MethodCallExpression.Accept(ExpressionVisitor visitor)
   at System.Linq.Expressions.ExpressionVisitor.Visit(Expression node)
   at Microsoft.EntityFrameworkCore.Query.Internal.NavigationExpandingExpressionVisitor.VisitMethodCall(MethodCallExpression methodCallExpression)
   at System.Linq.Expressions.MethodCallExpression.Accept(ExpressionVisitor visitor)
   at System.Linq.Expressions.ExpressionVisitor.Visit(Expression node)
   at Microsoft.EntityFrameworkCore.Query.Internal.NavigationExpandingExpressionVisitor.VisitMethodCall(MethodCallExpression methodCallExpression)
   at System.Linq.Expressions.MethodCallExpression.Accept(ExpressionVisitor visitor)
   at System.Linq.Expressions.ExpressionVisitor.Visit(Expression node)
   at Microsoft.EntityFrameworkCore.Query.Internal.NavigationExpandingExpressionVisitor.VisitMethodCall(MethodCallExpression methodCallExpression)
   at System.Linq.Expressions.MethodCallExpression.Accept(ExpressionVisitor visitor)
   at System.Linq.Expressions.ExpressionVisitor.Visit(Expression node)
   at Microsoft.EntityFrameworkCore.Query.Internal.NavigationExpandingExpressionVisitor.VisitMethodCall(MethodCallExpression methodCallExpression)
   at System.Linq.Expressions.MethodCallExpression.Accept(ExpressionVisitor visitor)
   at System.Linq.Expressions.ExpressionVisitor.Visit(Expression node)
   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__DisplayClass9_0`1.<Execute>b__0()
   at Microsoft.EntityFrameworkCore.Query.Internal.CompiledQueryCache.GetOrAddQueryCore[TFunc](Object cacheKey, Func`1 compiler)
   at Microsoft.EntityFrameworkCore.Query.Internal.CompiledQueryCache.GetOrAddQuery[TResult](Object cacheKey, Func`1 compiler)
   at Microsoft.EntityFrameworkCore.Query.Internal.QueryCompiler.Execute[TResult](Expression query)
   at Microsoft.EntityFrameworkCore.Query.Internal.EntityQueryProvider.Execute[TResult](Expression expression)
   at System.Linq.Queryable.Count[TSource](IQueryable`1 source)
   at Drive.Support.Extensions.PagedExtension.ToPagedList[T](IQueryable`1 source, Int32 page, Int32 size) in D:\d.webchat.server\Drive.Support.NetCore\Extensions\PagedExtension.cs:line 14
   at Drive.LiveChat.Server.Controllers.VisitorChatController.GetMessages(Int64 visitorId, Int32 channelId, Int32 page, Int32 size) in D:\d.webchat.server\Drive.LiveChat.Server\Controllers\VisitorChatController.cs:line 61
   at Drive.LiveExcelHost.Services.VisitorMessenger.SendChatHistory() in D:\d.webchat.server\Drive.LiveChat.Server\Services\VisitorMessenger.cs:line 47
   at Drive.LiveExcelHost.Services.VisitorMessenger.<OnSocketIoSessionCreate>d__3.MoveNext() in D:\d.webchat.server\Drive.LiveChat.Server\Services\VisitorMessenger.cs:line 40
   at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()
   at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)
   at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
   at System.Runtime.CompilerServices.TaskAwaiter.GetResult()
   at Drive.LiveExcelHost.SocketIoBootstrapper.<RespondToWebSocketRequestAsync>d__11.MoveNext() in D:\d.webchat.server\Drive.LiveChat.Server\SocketIoBootstrapper.cs:line 240
   at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()
   at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)
   at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
   at System.Runtime.CompilerServices.TaskAwaiter.GetResult()
   at Drive.LiveExcelHost.SocketIoBootstrapper.<ProcessWebSocketRequest>d__10.MoveNext() in D:\d.webchat.server\Drive.LiveChat.Server\SocketIoBootstrapper.cs:line 169

Further technical details

EF Core version:3.1.6
Database provider: Pomelo.EntityFrameworkCore.MySql 3.1.1
Target framework: netstandard 2.0
Operating system:
IDE: (e.g. Visual Studio 2019 16.3)

@smitpatel
Copy link
Contributor

Duplicate of #17068
See #17068 (comment)
See #19930

@ajcvickers ajcvickers reopened this Oct 16, 2022
@ajcvickers ajcvickers closed this as not planned Won't fix, can't repro, duplicate, stale Oct 16, 2022
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

3 participants