NHibernate 對(duì)分組聚合支持的不好
Hibernate 對(duì)分組聚合支持的不好,例如下面的代碼:
var query = from raqi in session.Query() group raqi by raqi.SpaceKey into g select new { g.Key, Count = g.Count(r => r.Raqi > 1) };
這樣的查尋生成的Sql如下,很明顯是錯(cuò)誤的,
select
factstatra0_.[SpaceKey] as col_0_0_,
cast(count(*) as INT) as col_1_0_
from
[dbo].[FactStatRaqi] factstatra0_
group by
factstatra0_.[SpaceKey]
LinqToSql可以生成正確的sql
-- Region Parameters
DECLARE @p0 Float SET @p0 = 1
-- EndRegion
SELECT [t1].[SpaceKey] AS [Key], (
SELECT COUNT(*)
FROM [FactStatRaqi] AS [t2]
WHERE ([t2].[RAQI] > @p0) AND ([t1].[SpaceKey] = [t2].[SpaceKey])
) AS [Count]
FROM (
SELECT [t0].[SpaceKey]
FROM [FactStatRaqi] AS [t0]
GROUP BY [t0].[SpaceKey]
) AS [t1]
看來,NH的Linq查尋還有很長的路要走。
張志敏所有文章遵循創(chuàng)作共用版權(quán)協(xié)議,要求署名、非商業(yè) 、保持一致。在滿足創(chuàng)作共用版權(quán)協(xié)議的基礎(chǔ)上可以轉(zhuǎn)載,但請(qǐng)以超鏈接形式注明出處。
本博客已經(jīng)遷移到 GitHub , 圍觀地址: https://beginor.github.io/
浙公網(wǎng)安備 33010602011771號(hào)