GroupBy executes on the client side
The current version of EF Core disregards GroupBy
.
Problem
We normally use the LINQ GroupBy
method to group records by some common characteristic, probably with the goal of doing aggregations. In most LINQ implementations, this generates a SQL GROUPBY
, which is what we want, but, in Entity Framework Core 1.0, this translation is silently ignored, and grouping is instead done on the client-side, after retrieving all records. The problem is, this may bring a lot of records, causing severe performance and memory problems.
Imagine, for example, that you have thousands of products distributed in four colors: blue, red, green, and yellow. You might want to run this query:
var productsGrouped = (from p in context.Products groupby p.Color into g select new { Color = g.Key, Count = g.Count() }) .ToDictionary(x => x.Color, x => x.Count);
What will happen is, Entity Framework will bring all the thousands of products into the client application and perform...