NHibernate 对分组聚合支持的不好
Hibernate 对分组聚合支持的不好,例如下面的代码:
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如下,很明显是错误的,
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查寻还有很长的路要走。
张志敏所有文章遵循创作共用版权协议,要求署名、非商业 、保持一致。在满足创作共用版权协议的基础上可以转载,但请以超链接形式注明出处。
本博客已经迁移到 GitHub , 围观地址: https://beginor.github.io/
浙公网安备 33010602011771号