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/