zurück zum Artikel

GroupBy funktioniert in Entity Framework Core 2.1 Release Candidate 1 endlich

Der Dotnet-Doktor

Tests in Entity Framework Core 2.1 Release Candidate 1 zeigen, dass nun tatsächlich die Übersetzung des LINQ-GroupBy-Operators in SQL funktioniert. Endlich!

Ich hatte wiederholt berichtet, dass Microsofts neuer OR-Mapper Entity Framework Core die bedeutende Schwäche besitzt, den LINQ-Operator GroupBy() nicht in entsprechendes GROUP BY in SQL umzusetzen, sondern alle Datensätze ins RAM zu laden und dort zu gruppieren, was eine Performance-Katastrophe bei vielen Datensätzen ist. Zuletzt berichtete ich, dass es in Entity Framework 2.1 Preview 1 [1] zwar funktionieren sollte, es tatsächlich aber nur in bestimmten Fälle klappte.

Heute kann ich berichten: Meine Tests in Entity Framework Core 2.1 Release Candidate 1 [2] zeigen, dass nun tatsächlich die Übersetzung des LINQ-GroupBy-Operators in SQL funktioniert. Endlich!

Aus diesem LINQ-Befehl:

   // Ermittele die Anzahl der Flüge pro Abflugort
using (var ctx = new WWWingsContext())
{
var gruppen = from p in ctx.FlugSet
orderby p.FreiePlaetze
group p by p.Abflugort into g
select new { Ort = g.Key, Anzahl = g.Count() };
Console.WriteLine("Anzahl: " + gruppen.Count());
// Ausgabe
foreach (var g in gruppen.ToList())
{
Console.WriteLine(g.Ort + ": " + g.Anzahl);
}
}

ensteht nun dieses SQL in Version 2.1 Release Candidate 1 von Entity Framework Core:

SELECT [p].[Departure] AS [City], COUNT(*) AS [Count]
FROM [Flight] AS [p]
GROUP BY [p].[Departure]
HAVING COUNT(*) > 5
ORDER BY [Count]

URL dieses Artikels:
http://www.heise.de/-4052521

Links in diesem Artikel:
[1] https://www.heise.de/developer/artikel/GroupBy-funktioniert-in-Entity-Framework-Core-2-1-Preview-1-immer-noch-nicht-so-ganz-3998438.html?wt_mc=rss.developer.blogdotnet.atom
[2] https://blogs.msdn.microsoft.com/dotnet/2018/05/07/announcing-entity-framework-core-2-1-rc-1/