2015-06-05 91 views
7

我試圖運行下面的代碼,但是當我檢查SQL分析器時,它看起來像在表上運行完整選擇,然後在它從數據庫返回所有結果後進行分組。任何幫助表示讚賞。實體框架7組

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

你能後生成的SQL你在配置文件中看到了嗎? –

+0

它只是做了一個「Select column1,column2,column3,column4 From LogEvent」,在SQL中沒有任何分組或總和 – RickJames

+0

我希望看到如果你做了類似'_dbContext.LogEvent的事情。 AsEnumerable()...''或'_dbContext.LogEvent.ToList()...'當你的查詢被寫入時,應該生成適當的SQL。你可以嘗試以下方法: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());' –

回答

7

It doesn't look like this is currently supported,但它看起來像有人看到了這個帖子,並創建鏈接的問題。

這個概念是一個相當複雜的邏輯位,而且EF7還處於早期階段。 .Net的GroupBy不會直接轉換爲SQL的GROUP BY,除非您只按聚合或密鑰輸入Select。如果你感覺雄心勃勃,你可以努力提供一個請求,或者continue to use EF6.

+0

是的,我認爲它還沒有完成。我正在瀏覽源代碼,並且註釋了一些事情。我現在可以解決這個問題。謝謝。 – RickJames