2015-06-05 7 views
7

Sto cercando di eseguire il seguente codice, ma quando controllo il profiler SQL sembra che esegua una selezione completa sulla tabella e quindi il raggruppamento dopo che restituisce tutti i risultati dal database. Qualsiasi aiuto è apprezzato.Entity Framework 7 group di

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

puoi pubblicare il codice SQL generato vedi nel profiler? –

+0

Fa semplicemente un "Seleziona colonna1, colonna2, colonna3, colonna4 Da LogEvent". Nessun raggruppamento o somma nell'SQL. – RickJames

+0

Mi aspetterei di vedere che se facessi qualcosa come '_dbContext.LogEvent. AsEnumerable() ... 'o' _dbContext.LogEvent.ToList() ... 'Mentre la tua query è scritta, dovrebbe essere generato l'SQL appropriato. Puoi provare: ' var q uery = = _dbContext.LogEvent.GroupBy (x => x.EventLevel) .Select (g => new {eventType = g.Key, total = g.Sum (i => i.Occurrences)}); Debug.Write (query.ToString()); ' –

risposta

7

It doesn't look like this is currently supported, ma sembra che qualcuno ha visto questo post e ha creato il problema legato.

Il concetto è un po 'logico piuttosto complesso e EF7 è in una fase iniziale. .Net GroupBy non si traduce direttamente in SQL GROUP BY finché non lo si segue con solo aggregati o la chiave in un Select. Se ti senti ambizioso, potresti lavorare su una richiesta di pull, o continue to use EF6.

+0

Sì, non pensavo che fosse ancora finito. Stavo guardando attraverso il codice sorgente e ci sono alcune cose commentate. Posso aggirare questo problema per ora. Grazie. – RickJames

0

Probabilmente non sarà supportato in qualsiasi momento presto - sfortunatamente. Provocare molta frustrazione perché così tante persone non leggono le note di rilascio e, naturalmente, supporrebbero che funzionerebbe come prima (EF6/Linq2SQL).

mi rendo conto che può essere complesso per le cose più complicate che coinvolgono soggetti interi, ma è un peccato che non è nemmeno supportata per query semplici come la vostra :-(

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