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

Return entire entity in projection (select) #17852

Closed
dmarlow opened this issue Sep 14, 2019 · 4 comments · Fixed by #18625
Closed

Return entire entity in projection (select) #17852

dmarlow opened this issue Sep 14, 2019 · 4 comments · Fixed by #18625
Assignees
Labels
closed-fixed The issue has been fixed and is/will be included in the release indicated by the issue milestone. customer-reported type-bug
Milestone

Comments

@dmarlow
Copy link

dmarlow commented Sep 14, 2019

Is it possible to return the entire entity in a projection or to only selectively get specific properties? If the latter, I guess this becomes a feature request since it's tedious to get every single property and have to keep that up-to-date.

Steps to reproduce

The line: Blog = x causes an exception: EF.Property called with wrong property name.

var results = Blogs
	.Include(x => x.Author)
	.Include(x => x.Comments)
	.Select(x => new 
	{
		Blog = x,
		NewestComment = x.Comments
			.OrderByDescending(y => y.DateCreated)
			.FirstOrDefault()
	})
	.ToList();

Stacktrace

   at Microsoft.EntityFrameworkCore.Query.RelationalSqlTranslatingExpressionVisitor.VisitMethodCall(MethodCallExpression methodCallExpression)
   at System.Linq.Expressions.MethodCallExpression.Accept(ExpressionVisitor visitor)
   at System.Linq.Expressions.ExpressionVisitor.Visit(Expression node)
   at Microsoft.EntityFrameworkCore.Query.RelationalSqlTranslatingExpressionVisitor.VisitBinary(BinaryExpression binaryExpression)
   at Microsoft.EntityFrameworkCore.Sqlite.Query.Internal.SqliteSqlTranslatingExpressionVisitor.VisitBinary(BinaryExpression binaryExpression)
   at System.Linq.Expressions.BinaryExpression.Accept(ExpressionVisitor visitor)
   at System.Linq.Expressions.ExpressionVisitor.Visit(Expression node)
   at Microsoft.EntityFrameworkCore.Query.RelationalSqlTranslatingExpressionVisitor.Translate(Expression expression)
   at Microsoft.EntityFrameworkCore.Query.RelationalQueryableMethodTranslatingExpressionVisitor.TranslateExpression(Expression expression)
   at Microsoft.EntityFrameworkCore.Query.RelationalQueryableMethodTranslatingExpressionVisitor.TranslateLambdaExpression(ShapedQueryExpression shapedQueryExpression, LambdaExpression lambdaExpression)
   at Microsoft.EntityFrameworkCore.Query.RelationalQueryableMethodTranslatingExpressionVisitor.TranslateWhere(ShapedQueryExpression source, LambdaExpression predicate)
   at Microsoft.EntityFrameworkCore.Query.QueryableMethodTranslatingExpressionVisitor.VisitMethodCall(MethodCallExpression methodCallExpression)
   at Microsoft.EntityFrameworkCore.Query.RelationalQueryableMethodTranslatingExpressionVisitor.VisitMethodCall(MethodCallExpression methodCallExpression)
   at System.Linq.Expressions.MethodCallExpression.Accept(ExpressionVisitor visitor)
   at System.Linq.Expressions.ExpressionVisitor.Visit(Expression node)
   at Microsoft.EntityFrameworkCore.Query.QueryableMethodTranslatingExpressionVisitor.VisitMethodCall(MethodCallExpression methodCallExpression)
   at Microsoft.EntityFrameworkCore.Query.RelationalQueryableMethodTranslatingExpressionVisitor.VisitMethodCall(MethodCallExpression methodCallExpression)
   at System.Linq.Expressions.MethodCallExpression.Accept(ExpressionVisitor visitor)
   at System.Linq.Expressions.ExpressionVisitor.Visit(Expression node)
   at Microsoft.EntityFrameworkCore.Query.QueryableMethodTranslatingExpressionVisitor.VisitMethodCall(MethodCallExpression methodCallExpression)
   at Microsoft.EntityFrameworkCore.Query.RelationalQueryableMethodTranslatingExpressionVisitor.VisitMethodCall(MethodCallExpression methodCallExpression)
   at System.Linq.Expressions.MethodCallExpression.Accept(ExpressionVisitor visitor)
   at System.Linq.Expressions.ExpressionVisitor.Visit(Expression node)
   at Microsoft.EntityFrameworkCore.Query.QueryableMethodTranslatingExpressionVisitor.VisitMethodCall(MethodCallExpression methodCallExpression)
   at Microsoft.EntityFrameworkCore.Query.RelationalQueryableMethodTranslatingExpressionVisitor.VisitMethodCall(MethodCallExpression methodCallExpression)
   at System.Linq.Expressions.MethodCallExpression.Accept(ExpressionVisitor visitor)
   at System.Linq.Expressions.ExpressionVisitor.Visit(Expression node)
   at Microsoft.EntityFrameworkCore.Query.QueryableMethodTranslatingExpressionVisitor.VisitMethodCall(MethodCallExpression methodCallExpression)
   at Microsoft.EntityFrameworkCore.Query.RelationalQueryableMethodTranslatingExpressionVisitor.VisitMethodCall(MethodCallExpression methodCallExpression)
   at System.Linq.Expressions.MethodCallExpression.Accept(ExpressionVisitor visitor)
   at System.Linq.Expressions.ExpressionVisitor.Visit(Expression node)
   at Microsoft.EntityFrameworkCore.Query.QueryableMethodTranslatingExpressionVisitor.VisitMethodCall(MethodCallExpression methodCallExpression)
   at Microsoft.EntityFrameworkCore.Query.RelationalQueryableMethodTranslatingExpressionVisitor.VisitMethodCall(MethodCallExpression methodCallExpression)
   at System.Linq.Expressions.MethodCallExpression.Accept(ExpressionVisitor visitor)
   at System.Linq.Expressions.ExpressionVisitor.Visit(Expression node)
   at Microsoft.EntityFrameworkCore.Query.QueryableMethodTranslatingExpressionVisitor.TranslateSubquery(Expression expression)
   at Microsoft.EntityFrameworkCore.Query.RelationalSqlTranslatingExpressionVisitor.VisitMethodCall(MethodCallExpression methodCallExpression)
   at System.Linq.Expressions.MethodCallExpression.Accept(ExpressionVisitor visitor)
   at System.Linq.Expressions.ExpressionVisitor.Visit(Expression node)
   at Microsoft.EntityFrameworkCore.Query.RelationalSqlTranslatingExpressionVisitor.Translate(Expression expression)
   at Microsoft.EntityFrameworkCore.Query.Internal.RelationalProjectionBindingExpressionVisitor.Visit(Expression expression)
   at Microsoft.EntityFrameworkCore.Query.Internal.RelationalProjectionBindingExpressionVisitor.VisitNew(NewExpression newExpression)
   at System.Linq.Expressions.NewExpression.Accept(ExpressionVisitor visitor)
   at System.Linq.Expressions.ExpressionVisitor.Visit(Expression node)
   at Microsoft.EntityFrameworkCore.Query.Internal.RelationalProjectionBindingExpressionVisitor.Visit(Expression expression)
   at Microsoft.EntityFrameworkCore.Query.Internal.RelationalProjectionBindingExpressionVisitor.Translate(SelectExpression selectExpression, Expression expression)
   at Microsoft.EntityFrameworkCore.Query.RelationalQueryableMethodTranslatingExpressionVisitor.TranslateSelect(ShapedQueryExpression source, LambdaExpression selector)
   at Microsoft.EntityFrameworkCore.Query.QueryableMethodTranslatingExpressionVisitor.VisitMethodCall(MethodCallExpression methodCallExpression)
   at Microsoft.EntityFrameworkCore.Query.RelationalQueryableMethodTranslatingExpressionVisitor.VisitMethodCall(MethodCallExpression methodCallExpression)
   at System.Linq.Expressions.MethodCallExpression.Accept(ExpressionVisitor visitor)
   at System.Linq.Expressions.ExpressionVisitor.Visit(Expression node)
   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 Microsoft.EntityFrameworkCore.Query.Internal.EntityQueryable`1.GetEnumerator()
   at System.Collections.Generic.List`1..ctor(IEnumerable`1 collection)
   at System.Linq.Enumerable.ToList[TSource](IEnumerable`1 source)

Further technical details

EF Core version: 3.0 preview 9
Database provider: SQLite
Target framework: .NET Core 3.0
Operating system: Win 10
IDE: Visual Studio 2019 16.2.4

@divega divega added this to the 3.1.0 milestone Sep 16, 2019
@maumar maumar added closed-fixed The issue has been fixed and is/will be included in the release indicated by the issue milestone. and removed closed-fixed The issue has been fixed and is/will be included in the release indicated by the issue milestone. labels Oct 2, 2019
maumar added a commit that referenced this issue Oct 2, 2019
resolves #14550
resolves #15164
resolves #15994

added regression tests for #14671
added regression test for #17852
converted remaining tests in Gears of War into AssertQuery pattern (part of #12501)
maumar added a commit that referenced this issue Oct 2, 2019
resolves #14550
resolves #15164
resolves #15994

added regression tests for #14671
added regression test for #17852
converted remaining tests in Gears of War into AssertQuery pattern (part of #12501)
maumar added a commit that referenced this issue Oct 2, 2019
resolves #14550
resolves #15164
resolves #15994
resolves #16722

added regression tests for #14671
added regression test for #17852
converted remaining tests in Gears of War into AssertQuery pattern (part of #12501)
@itorian
Copy link

itorian commented Oct 15, 2019

I'm facing this issue when migrated .net core 2.2 to 3.0, here's my query which is buggy after migration:

var orders = await orderService.GetAll()
    .GroupBy(i => new { i.Timestamp.Value.Month })
    .Select(i => new LineChartViewModel()
    {
        Month = i.Key.Month,
        Total = i.Count(),
        Date = i.First().Timestamp.Value,
        Label = i.First().Timestamp.Value.ToString("MMMM") + " " + i.First().Timestamp.Value.Year
    }).ToListAsync();

Error stack:

System.InvalidOperationException: The LINQ expression 'First<Tenant>(GroupByShaperExpression:
KeySelector: new { Month = DATEPART(month, t.Timestamp) }, 
ElementSelector:EntityShaperExpression: 
    EntityType: Tenant
    ValueBufferExpression: 
        ProjectionBindingExpression: EmptyProjectionMember
    IsNullable: False
)' could not be translated. Either rewrite the query in a form that can be translated, or switch to client evaluation explicitly by inserting a call to either AsEnumerable(), AsAsyncEnumerable(), ToList(), or ToListAsync(). See https://go.microsoft.com/fwlink/?linkid=2101038 for more information.
   at Microsoft.EntityFrameworkCore.Query.RelationalSqlTranslatingExpressionVisitor.VisitMethodCall(MethodCallExpression methodCallExpression)
   at System.Linq.Expressions.MethodCallExpression.Accept(ExpressionVisitor visitor)
   at Microsoft.EntityFrameworkCore.Query.RelationalSqlTranslatingExpressionVisitor.Translate(Expression expression)
   at Microsoft.EntityFrameworkCore.Query.Internal.RelationalProjectionBindingExpressionVisitor.Visit(Expression expression)
   at Microsoft.EntityFrameworkCore.Query.Internal.RelationalProjectionBindingExpressionVisitor.VisitMemberAssignment(MemberAssignment memberAssignment)
   at System.Linq.Expressions.ExpressionVisitor.VisitMemberBinding(MemberBinding node)
   at Microsoft.EntityFrameworkCore.Query.Internal.RelationalProjectionBindingExpressionVisitor.VisitMemberInit(MemberInitExpression memberInitExpression)
   at System.Linq.Expressions.MemberInitExpression.Accept(ExpressionVisitor visitor)
   at Microsoft.EntityFrameworkCore.Query.Internal.RelationalProjectionBindingExpressionVisitor.Visit(Expression expression)
   at Microsoft.EntityFrameworkCore.Query.Internal.RelationalProjectionBindingExpressionVisitor.Translate(SelectExpression selectExpression, Expression expression)
   at Microsoft.EntityFrameworkCore.Query.RelationalQueryableMethodTranslatingExpressionVisitor.TranslateSelect(ShapedQueryExpression source, LambdaExpression selector)
   at Microsoft.EntityFrameworkCore.Query.QueryableMethodTranslatingExpressionVisitor.VisitMethodCall(MethodCallExpression methodCallExpression)
   at Microsoft.EntityFrameworkCore.Query.RelationalQueryableMethodTranslatingExpressionVisitor.VisitMethodCall(MethodCallExpression methodCallExpression)
   at System.Linq.Expressions.MethodCallExpression.Accept(ExpressionVisitor visitor)
   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`1.<ExecuteAsync>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.ExecuteAsync[TResult](Expression query, CancellationToken cancellationToken)
   at Microsoft.EntityFrameworkCore.Query.Internal.EntityQueryProvider.ExecuteAsync[TResult](Expression expression, CancellationToken cancellationToken)
   at Microsoft.EntityFrameworkCore.Query.Internal.EntityQueryable`1.GetAsyncEnumerator(CancellationToken cancellationToken)
   at System.Runtime.CompilerServices.ConfiguredCancelableAsyncEnumerable`1.GetAsyncEnumerator()
   at Microsoft.EntityFrameworkCore.EntityFrameworkQueryableExtensions.ToListAsync[TSource](IQueryable`1 source, CancellationToken cancellationToken)
   at Kn.Admin.Web.Core.Controllers.TenantController.GetTenantsChart() in C:\Users\abhimanyu\source\repos\kn-tfs\Kn.Admin.Web.Core\Controllers\TenantController.cs:line 67
   at Microsoft.AspNetCore.Mvc.Infrastructure.ActionMethodExecutor.TaskOfIActionResultExecutor.Execute(IActionResultTypeMapper mapper, ObjectMethodExecutor executor, Object controller, Object[] arguments)
   at Microsoft.AspNetCore.Mvc.Infrastructure.ControllerActionInvoker.<InvokeActionMethodAsync>g__Logged|12_1(ControllerActionInvoker invoker)
   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.<InvokeNextResourceFilter>g__Awaited|24_0(ResourceInvoker invoker, Task lastTask, State next, Scope scope, Object state, Boolean isCompleted)
   at Microsoft.AspNetCore.Mvc.Infrastructure.ResourceInvoker.Rethrow(ResourceExecutedContextSealed context)
   at Microsoft.AspNetCore.Mvc.Infrastructure.ResourceInvoker.Next(State& next, Scope& scope, Object& state, Boolean& isCompleted)
   at Microsoft.AspNetCore.Mvc.Infrastructure.ResourceInvoker.InvokeFilterPipelineAsync()
--- End of stack trace from previous location where exception was thrown ---
   at Microsoft.AspNetCore.Mvc.Infrastructure.ResourceInvoker.<InvokeAsync>g__Logged|17_1(ResourceInvoker invoker)
   at Microsoft.AspNetCore.Routing.EndpointMiddleware.<Invoke>g__AwaitRequestTask|6_0(Endpoint endpoint, Task requestTask, ILogger logger)
   at Microsoft.AspNetCore.Authorization.AuthorizationMiddleware.Invoke(HttpContext context)
   at Microsoft.AspNetCore.Authentication.AuthenticationMiddleware.Invoke(HttpContext context)
   at Microsoft.AspNetCore.Diagnostics.DeveloperExceptionPageMiddleware.Invoke(HttpContext context)

HEADERS
=======
Accept: */*
Accept-Encoding: gzip, deflate, br
Accept-Language: en-US,en;q=0.9
Connection: keep-alive
Cookie: ai_user=Ug8VZ|2019-09-27T10:25:52.393Z; _ga=GA1.1.1609391056.1569579953; _gid=GA1.1.691227988.1571055237; .AspNetCore.Antiforgery.VbLDqharDiM=CfDJ8A3NKip0V_BFjVMVxT034-WQkkyIjdTIqAop1uRYk-A8b3OBW20X5_E_1Oya9KlKSysiq07-JjcQCTqhzVflSRdrwcBm4VyBY677_nRdcQRwuiczM193cKlXOEoTNQiSZQHLyHDTyfKXHwsvf2FjR5M; ReturnUrl=%2Fconnect%2Fauthorize%2Fcallback%3Fclient_id%3Dkn-admin-app%26redirect_uri%3Dhttp%253A%252F%252Flocalhost%253A40561%252Fsignin-oidc%26response_type%3Dcode%2520id_token%2520token%26scope%3Dopenid%2520profile%2520offline_access%2520roles%2520knapi%26response_mode%3Dform_post%26nonce%3D637067401872253169.MWE2MWZhOGMtMmUyNS00ZTI1LThkOWYtNDhiOTFkZTNkYmM5YjNhNzRiODEtOTkxMy00NTI0LTgzN2MtYjI4YzMwZDFmM2U0%26state%3DCfDJ8A3NKip0V_BFjVMVxT034-XsibYY04qWfBuGvCQd0wzna0ses0viogii2fJmAKCLZgbdFKewOGA2hcsFTJnEax7dacB_7H5mK-7nTQ8-xm9BdPsknFLBln2fi7D9DB1xPQoHy2R0k_vBBzPqiBGAaaKQVF7XFYo7TyaMFa69ZTaSW9VMQcP9mdKYX9t_4NJ6ge7Gh1Z4y_dFFIBbw77iw4yX614OWwW6vzI5y4JHpU3wb9zQQDX6MJsRSmdKeyxXJwym1WfOyMK95QYEtzzs_MmUZGleRpIOTbrjc5g-Xena%26x-client-SKU%3DID_NETSTANDARD2_0%26x-client-ver%3D5.5.0.0; idsrv.session=g9BR79-70_jzqj4ZQ3BZoA; .AspNetCore.Identity.Application=CfDJ8A3NKip0V_BFjVMVxT034-VFH1u586OPLlgY3LbsiUe2WnaKKJzStTpzOuxUSB4HwZABZkMYaAUrgLrsJ4aPe0sSUNbAvoYrzrdF_-IsGGwpcfP29_sL8bu59krP3dXrNP_CRq1VxLd2yzUouEqMu970egJ835gtzVeFSfIONKW6hqON0kQbaGXkkBokAkspUOiqkC2vFD2SIeK8JOlP6LXtb1Ftm3wVGvP0zr95bIx7Qs6ywZ4x72wc-O_vLRtmz7EdkREuzZqQN7nbV1qZLGmTX87PQusgVpcKzFhWGtqW_TG-oweyU6kqVjMc8b4LOHjPZQsfMcayUb7vyEb12nCCQyz2DAPU8eQLt6XNwVu_KjAcOz7OPowOzAUFPl_kIwf6xgSD32kO7HvVZmP8tGcnE3MQXPdvdxMkrK76G7xLqMqzSACuBPiTV7a0OBShzTPaDIRBfNOQ2dPEwqFeMvf__WtybumDsaOvb9SjyBqgY_OcbwfLvheZxRBwGkg06gB2aIHHlgCFp1uHJ6P2E3HPOtIe7ylhIiWEP8oKCDoWlkqwHXvE7IHNW4lJNWfTKXcR1cu-rBquRQpfojZaS15AaQWdIyOOqRJ32tM2ZfxlIviGcc3GBz67pZ5oyuvBueNBl8YmQmqeI6-lAR9Mk2PRu0tu4yaqmSVW0d39fdORgllxsxuQPN-LI77tNNOEOQb2iMzOqzjp2FSGXaYNAd1TFAWm9_VRTI6ToZiKSId6004SFgW_zoCk33DDvTN_nalY54wjvkbSszp7hxj4aqgm_jU7LRhoYl302iipSq_hxhQaXSra3X76IhVEZCxp1ebjmkX697tEf2i0NSicHbwdgcG-TQHwco7lvtaKG5SMrB3fK2fPwtz7W5_ofOtT4c1nnLt_yomWK2TBQaSda9uMn3TDVmGNziZdDGYDLU-eXMRsol08jiUxcSrBdb-UgWTIc8p-f5ilLI9GYdSFWkjn6NMqQdk_in9PsSUdguU12UNriEwCtHOcIOHFeYAwoYM7gzZqb0OfH98ux0eBIPqeoCuU06uwpjx18teRImQBQrtCqCYB6Os82qrob6Ylap8aDv4EmNDqfpTkQUhOi4J-muN6iPU7A88Cy3fY8nQIVG2U3TskXoM17HQk9-y7GVTFrgxxyftlf_5IN_wWaXg0NjugX55zEC4xaLdVH3Q-ayuhKl2HXaYJXDijCpeNVwqrzbHWw1S5b37k4vCdFTaydzHTSDHbyz1oYflS1Rgu; .AspNetCore.Cookies=chunks-2; .AspNetCore.CookiesC1=CfDJ8A3NKip0V_BFjVMVxT034-Xzj1covk6gkklr7ej9lOj2YQqcw5OZV1ceGYhUamkaBzM4BV3bzMWjTHYde6_Lr1elP9TR0g9upWIebva6E5g6RHb453LnoSopa1iDdT_OYvK3Ny2nonmYJAcaySzyL-_KXQ64P2u1pBte-7nMLbAsY1wioDq5muST0k-fEbcIpnZH95tkpmH9Ttn-CS9JpNO2iqwYM8me8GyiCGGYHu3tKcgqDiNcijivNU1j6YPwOegAGqr0pIS4HaXIMbQy5V6GwLkZVLBQZW4Jle45jsWwuZ4lb6egqyOr5Yn7dPEUb1aF1CxBI8O41x4dMtmoRZByXHXNM8uG1DJazp8XekHcmeksZ_3IIzdzHdIl0GSZ3wbb0FuheWliihq-wolQKx8dEwStsCu6daC5iJSDd-GS-mynsdqKNNiLmpQOfGjLVgQNDMSRR3EvYGO_8IEk8Fzed3gtq02jPeE3i30aO6_3rPyoBv04fvxtK0oy4K6Wr_rgz39JOyKXUSk2A1cl5Z3QvnLCjYQg5ZUEOQmnF0EnqonzsNG5ee8jL3pVmB3akhzJ4W2Prf6O4ty_or_AcR4LRjw7sryEG3N2u8JjKvO2ESW3S_H3me2sjNzoSTpQFYU9WwnKiCjgWgvDeSO1R6D6IQ9cjVS9TRuKr7a7hTEMHPJsq6Usudavh0tSWMNF5CPbWy4WDEMEXb4rSWt2b4dHgz2EaSCs6GjHYLlyh0vyLax90WUj5z2Qgv2Suk51F80xKpJR3Jh1-TPnXCdZ81oHrWHLgK3Y3D4ANrF5dTQ3xkPyxwAar-v2ECkYN8i6sd6m4ReV33Iw4agsz8BCDFc1jEMppwx0JyPSzYQs0azBEW95Ok4q_0twGuqafdEW4GaEQB4BsNNHTb5HuFMGiNNQ7Fk8J_R3iu9pH1GCTY1syts8Ob89-32RjqZClYWxfCdnzUA7NiUNXMh1cXpBFA9zdKmXRKFhzwo1vo4P30v3-tNuUtE-DKVePGwEp0feKId--mSAr68Jvqp8XM5_pZ7XtzwdUgkatmzM0CsAeDQs4vRHJbaYBFAGAch6YDI2VUzFlz5YmJH7-xiTsE5_ttkuPrQiwVxJ6NEWBWYs0097S4L8IaZIbch1tZrLW12tMNevxRRJET6PlOjfBv1U4rOEP6ik8nX9GGhDHL2bkHQfcEBcD2cjl5u5UX7RPsG_fMhUDVnschJV9rn0-zF4dBD_jykUsUGfULze9HZPOXcMPO4C9MQ3ubRa6MhnlGK2AmIPDKSn9dqOiMy6bMws3H3EAXpwlTLpJF-f2zha2a86xGlyAPJo8k6xfk765w6FaWrpC0nHigJ-Fic7BHezP6e0-Pq-uPuWyE3t1iXNN9DOdtEa8hkt_aRwYbkSbkHkZubB1aFXiMWBO5BWPXUJ7ZImam9-gVGsKwnmjSa8YSWAacVUKTg-fZUfUt_872QFJ8a6VAD3wKRylkdcRxPhyJs7zKN8CWzV5dZOaC0YWeIyhJFuo8kK60jXS2g1mJ7enNyOSI2mmovqIK54xnWQcx__YkTzzsSPAvCv35pXigeRmsk0Scq0aNfaPeyC8hF6LmWacIFLHwD2YloAvNGpSG1FaTQxAoxHZrdjdZ05G58sqFHFsmP3yjd2VCRgGqilOV7Pu1lUd5cHrNRFLbVmGrF45b4tJCAmFyEAkaMXQsv9hVmmYeTkUR-4khI3tsMRMifg3c-QVm0QwKZH6skrK25LewXVtnOpuFsvmbdUdVV7bupwd6vZq3Rdo5aDvERXh46DOrFrVNtdw5dLtXEAQAFZ_l_qpHolpzEEHtgJoOYmQvwoZQYH-ikj-S6Z05-h1RCP6qXqJPBHiVs8lq8TZf5zK-pMRDPfretkPrYPaZBN44gV63uwhYBAeIU3tjK-h7Pw0vqRjGWEldY7gKsyUpP33FnPdiMzOzx4KlFfarsrDRdUnqti3VHIoKSaxxvI4u5sOUs3uc5D5GY7rnppAW5zc0F-8JyhQmHWbNyXAeELVhDM5aKfqjISbSAjRVCVHdEt7DCzJYZDjA3nXncD20gylJhLd1tR9eB_cO9DvOczZnM-rjBLeVXt3lH6QX7BQA_5vTc5lsfzInhQgyT6IBZ3hfW0jH-iKOYupMX8zknxZQovVuW0MorJXjaaqvpsdbHr87PWlsCEp1AnjEHqbYPO6pEE5og5wR0GE6ZYEl4tjDvtX4iuFQtlIbnIs_e_JgQI94FErRNn720MS2Bm0mRCYDTBqLq_5dIMYhd3k6eOOatf6HzYHAzAkxgp4H73CENLy6yTj07wzAk8IAUXhlzoJIjZ4lOPiikH8jQNMLfrvV-NI0laBtLV9urUt73QplfQm_8QTErVQH8_Yg1t887syyLl97vCEmCr_2-CtueCzAsl2r4HoOYaICC6Y-rFOpohG8kdAwaM3_uPFDO2GddgmWqp00iCUj_-vNRkOQCCdcqbH6FZBVRD_O2q20QrzBYxclt3qtW1nTuTYzAbAqJczMvRiXDutd9XhIIeqRRwYJY1v2NIo5zRwuNrFln9hOy6N_vZ6fZPYuVgoOGNE3ynLnlftpRJ7UKrdzLR0leQu-LD50APc75ooBk96DXzdsCIVQm0pw-Gnli0bNDxR6PfTe2VXKFvgJNjfadopnznFLSyjL23mg3CQRKpeoEpfLPLtXjTv6U_OWD96wgC7u0y6Jq-OlmgP_fI7dZUCgTXLJD8ouqwmoJJMOL-qnrt6PRZysAj3GjKD-381XWhtu9rR9q7jfShbgpivDiDOjPtY1vbf4oPLjxo4Lr1BnC10awxw2rXZyx0ZNK4Hsvu6ZbROlfcpZrJI4Ql5eHBdZOWplvm3G7T6SvcIL85Z_ZWt0annA95sg9w4IlPMJDd6cgHIAgzqy7FYgyj4pba-vUx6-cRqvkUwSuikJo6plzb-Mzw8ysxWGs4jpiGxTKMy9spS0EU7BdM1QCyShWOR9UbMBIimYH16-DRjOGtoxDVOdBxyyMENtTGYigUnkol6ysZZ2rRH68BLLOopsLwNpbYtvKk3iDHTS17T2RqbiEJtSnnSnPTd32PHIEMpLH52pcfIvzBXGWglDl6IlwVqhkGOn-S8tiBfAduGauDGGh1YV25uO6xN_eieKK04p6y-KwgXt60LpuBvLu5SEIZ__Ek4u07Qp2PFwWYWawAWP9Ud4UI-VzXq-BC_bGH4yasppODM5kliKGKGg3Hm-8Nha6TpBy4Gr2B1ESiXGgPutKEPtUdZp8v1ir8EOP2CmydXwqQZqVywVSsCbpbu1GTYSWRrv-GyEFerfNrTa9TvcricglfJGSVKlBMOPpJ_gIYHOHlvpuf1amOz6exIXd_PIYrlUxG_-beh5YtgFw2qSQujEna32F2yS5UkaADncjW2_SGjfs6TnsN3VjHzZNZpMbFAV-O2FC4OZu4tAMe-zUVo4yWGoZgbniK-BY7QPxfQsoru-dTtO82TbFx4qE0bXS8qY5fxRM3O7n-x-T09syUD7UIjaZII-02HROdEOhawikMAnQLUxtrNr4F7nCTFmgYGxRab1FK3P_bsDjgLn0l51W8B7WJfvqoB3uAGAYCkwYZVry_9MV9cthsec7uzJz3GKt6SP6sL1Baw64Jn4E9kK81NOyoSiqa7LZli7erxDNMIcEztw0GFEYBxqdgJF9omxzUWsWvcC8Vs2tXzUt42j4pVExCU_DdkpVUM921If9DXA7DSOW38-vNtsLUlPyI1-vg2HIoDRr1TriyMzEUmVwZsRXtp92UQ72625rRLc6lPJO7VqDru0IaDhSnk__lgeo6n0laY1emvlCWtxtG4M0aqEEDLRc94VUO2KTB-tkItxVzSVF6XMNV81FBaYOVmB9npIHS0LKP-8cxGcC-4Uhvm9Xqcpe2wauzyoQ01d_ZHwX3E6DguUHRXnr3jjtttJvcFQ-7ipa-bkUJTuKplO8-A_gHwkYF9UAa8pqx5Uk; .AspNetCore.CookiesC2=TF-0UIeRIv72nZohbiURLPzZ1m7DnXwt625Oma7c_uw; ai_session=riG9a|1571137564561|1571147166484.925
Host: localhost:40561
Referer: http://localhost:40561/tenant
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.120 Safari/537.36
X-Requested-With: XMLHttpRequest
Sec-Fetch-Mode: cors
Sec-Fetch-Site: same-origin

If I rollback to .net core 2.2, this works perfectly.

@smitpatel
Copy link
Member

@itorian - Your issue is not related to this issue or any other issues you spammed. You are doing GroupBy First. That evaluated on client. EF Core 3.0 does not support client evaluation so it is not supported as the exception message says. See #13805

@itorian
Copy link

itorian commented Oct 15, 2019

@itorian - Your issue is not related to this issue or any other issues you spammed. You are doing GroupBy First. That evaluated on client. EF Core 3.0 does not support client evaluation so it is not supported as the exception message says. See #13805

Sorry about spamming which you think, but can you please confirm if this was supported in earlier version of EF Core? We started facing this issue only after migrating from 2.2 to 3.0 and when we rolled back to 2.2 it worked again.

@smitpatel
Copy link
Member

@maumar maumar assigned smitpatel and unassigned maumar Oct 17, 2019
@smitpatel smitpatel added the closed-fixed The issue has been fixed and is/will be included in the release indicated by the issue milestone. label Oct 28, 2019
smitpatel added a commit that referenced this issue Oct 28, 2019
Issue: Earlier we expanded navigation in selector and include in separate phase. This causes issue because if the latter visitor expands a reference navigation then former visitor's collection expansions have incorrect references.
Fix: Fix is to make include expansion part of selector expansion as next phase. So by the time we apply include, the correlation predicate in collection hasn't been converted to actual reference. So when it gets converted, it takes correct reference.

Also apply pending selector inside lambda expression since it is a subquery. This caused issue when subquery has a projection which has navigation to expand, which we never visited.

Resolves #18127
Resolves #18090
Resolves #17852
Resolves #17756
smitpatel added a commit that referenced this issue Oct 28, 2019
Issue: Earlier we expanded navigation in selector and include in separate phase. This causes issue because if the latter visitor expands a reference navigation then former visitor's collection expansions have incorrect references.
Fix: Fix is to make include expansion part of selector expansion as next phase. So by the time we apply include, the correlation predicate in collection hasn't been converted to actual reference. So when it gets converted, it takes correct reference.

Also apply pending selector inside lambda expression since it is a subquery. This caused issue when subquery has a projection which has navigation to expand, which we never visited.

Resolves #18127
Resolves #18090
Resolves #17852
Resolves #17756
smitpatel added a commit that referenced this issue Oct 28, 2019
Issue: Earlier we expanded navigation in selector and include in separate phase. This causes issue because if the latter visitor expands a reference navigation then former visitor's collection expansions have incorrect references.
Fix: Fix is to make include expansion part of selector expansion as next phase. So by the time we apply include, the correlation predicate in collection hasn't been converted to actual reference. So when it gets converted, it takes correct reference.

Also apply pending selector inside lambda expression since it is a subquery. This caused issue when subquery has a projection which has navigation to expand, which we never visited.

Resolves #18127
Resolves #18090
Resolves #17852
Resolves #17756
smitpatel added a commit that referenced this issue Oct 29, 2019
Issue: Earlier we expanded navigation in selector and include in separate phase. This causes issue because if the latter visitor expands a reference navigation then former visitor's collection expansions have incorrect references.
Fix: Fix is to make include expansion part of selector expansion as next phase. So by the time we apply include, the correlation predicate in collection hasn't been converted to actual reference. So when it gets converted, it takes correct reference.

Also apply pending selector inside lambda expression since it is a subquery. This caused issue when subquery has a projection which has navigation to expand, which we never visited.

Resolves #18127
Resolves #18090
Resolves #17852
Resolves #17756
smitpatel added a commit that referenced this issue Oct 29, 2019
Issue: Earlier we expanded navigation in selector and include in separate phase. This causes issue because if the latter visitor expands a reference navigation then former visitor's collection expansions have incorrect references.
Fix: Fix is to make include expansion part of selector expansion as next phase. So by the time we apply include, the correlation predicate in collection hasn't been converted to actual reference. So when it gets converted, it takes correct reference.

Also apply pending selector inside lambda expression since it is a subquery. This caused issue when subquery has a projection which has navigation to expand, which we never visited.

Resolves #18127
Resolves #18090
Resolves #17852
Resolves #17756
smitpatel added a commit that referenced this issue Oct 30, 2019
Issue: Earlier we expanded navigation in selector and include in separate phase. This causes issue because if the latter visitor expands a reference navigation then former visitor's collection expansions have incorrect references.
Fix: Fix is to make include expansion part of selector expansion as next phase. So by the time we apply include, the correlation predicate in collection hasn't been converted to actual reference. So when it gets converted, it takes correct reference.

Also apply pending selector inside lambda expression since it is a subquery. This caused issue when subquery has a projection which has navigation to expand, which we never visited.

Resolves #18127
Resolves #18090
Resolves #17852
Resolves #17756
@ajcvickers ajcvickers modified the milestones: 3.1.0-preview3, 3.1.0 Dec 2, 2019
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
closed-fixed The issue has been fixed and is/will be included in the release indicated by the issue milestone. customer-reported type-bug
Projects
None yet
Development

Successfully merging a pull request may close this issue.

6 participants