EfCore 3.1 CosmosDb查询无法翻译

时间:2020-02-22 21:00:13

标签: azure-cosmosdb ef-core-3.0

System.InvalidOperationException:'LINQ表达式'DbSet 。通过...分组( 来源:e => new { ExchangeName = e.ExchangeName, TimeFrame = e.TimeFrame, 符号= e.Symbol }, keySelector:e => e)'无法翻译。以一种可以翻译的形式重写查询,或者通过插入对AsEnumerable(),AsAsyncEnumerable(),ToList()或ToListAsync()的调用来显式切换到客户端评估。有关更多信息,请参见https://go.microsoft.com/fwlink/?linkid=2101038

var query = from stick in context.EmaExchangeEventSpecifications
     group stick by new { stick.ExchangeName, stick.TimeFrame, stick.Symbol } into g
     select new { g.Key.ExchangeName, g.Key.TimeFrame, g.Key.Symbol, Count = g.Count() };
var results = query.ToList();

我需要更改些什么才能翻译此查询?也许Cosmos不支持此功能?

2 个答案:

答案 0 :(得分:0)

在EF Core 3.x中,“分组依据”子句的工作方式已发生重大变化。不再支持许多以前受支持的表达式:

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

答案 1 :(得分:0)

我们现在有一个工作项来启用此支持。您可以从这里跟踪。 https://github.com/Azure/azure-cosmos-dotnet-v3/issues/1202

谢谢。