2015-06-05 3 views
7

Ich versuche, den folgenden Code auszuführen, aber wenn ich den SQL Profiler überprüfen, sieht es aus wie es eine vollständige Auswahl für die Tabelle ausführt und führt dann die Gruppierung nach alle Ergebnisse aus der Datenbank zurück. Jede Hilfe wird geschätzt.Entity Framework 7 Gruppe von

var result = _dbContext.LogEvent.GroupBy(x => x.EventLevel) 
           .Select(g => new 
               { 
                eventType = g.Key, 
                total = g.Sum(i => i.Occurrences) 
               }) 
           .ToList(); 
+1

Können Sie die generierten SQL-Post Sie sehen in der Profiler? –

+0

Es macht nur eine "Select column1, column2, column3, column4 Von LogEvent". Keine Gruppierung oder Summe in der SQL. – RickJames

+0

Ich würde erwarten, dass zu sehen, wenn Sie etwas wie '_dbContext.LogEvent. AsEnumerable() ... 'oder' _dbContext.LogEvent.ToList() ... 'Wenn Ihre Abfrage geschrieben wird, sollte das entsprechende SQL generiert werden. Können Sie Folgendes versuchen: ' var q uery = = _dbContext.LogEvent.GroupBy (x => x.EventLevel) .Wählen Sie (g => new {eventType = g.Key, total = g.Sum (i => i.Occurrences)}); Debug.Write (query.ToString()); ' –

Antwort

7

It doesn't look like this is currently supported, aber es sieht aus wie jemand diesen Beitrag gesehen und das verknüpfte Problem geschaffen.

Das Konzept ist ein ziemlich komplexes Stück Logik, und EF7 ist sehr in einer frühen Phase. .Net's GroupBy übersetzt nicht direkt in SQL GROUP BY, bis Sie es nur mit Aggregaten oder dem Schlüssel in einer Select folgen. Wenn Sie sich ehrgeizig fühlen, könnten Sie daran arbeiten, eine Pull-Anfrage zu stellen, oder continue to use EF6.

+0

Ja, ich dachte nicht, dass es schon getan wurde. Ich habe den Quellcode durchgesehen und einige Dinge kommentiert. Ich kann dieses Problem jetzt umgehen. Vielen Dank. – RickJames

0

Es wird wahrscheinlich nicht bald unterstützt werden - bedauerlicherweise. Das wird sehr frustrierend sein, weil so viele Leute keine Release-Notes lesen und einfach davon ausgehen, dass es wie vorher funktioniert (EF6/Linq2SQL).

Ich weiß, es kann für kompliziertere Dinge beteiligen ganze Einheiten komplex sein, aber es ist eine Schande, es nicht einmal für einfache Abfragen wie Ihre unterstützt :-(

https://blogs.msdn.microsoft.com/dotnet/2016/05/16/announcing-entity-framework-core-rc2/