Closed dmarlow closed 5 years ago
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.
@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 - 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.
It was being evaluated on client. Please see https://docs.microsoft.com/en-us/ef/core/what-is-new/ef-core-3.0/breaking-changes#linq-queries-are-no-longer-evaluated-on-the-client
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.
Stacktrace
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