NHibernate Criteria将Count(*)添加到sql中,无缘无故导致SQL错误

时间:2011-05-16 14:38:37

标签: nhibernate nhibernate-criteria

我已将NHib 1.2中的一些代码升级到3.1。我们一直在使用NHibernate Criteria。其中一个例子如下:

ICriteria crit = CreateCriteria();
crit.Add(Expression.Eq("EntityId", entity.Id));
crit.AddOrder(new Order("DateTime",true));

我们设置了FirstResult和maxResults,因为我们正在使用它进行分页。

_criteria.SetFirstResult(startIndex);
_criteria.SetMaxResults(pageSize);
return _criteria.List<T>();

但是我们创建了以下sql和sql异常

[SQL: SELECT TOP (@p0) count(*) as y0_ FROM dbo.tbl_EntityEvent this_ WHERE
this_.EntityId = @p1 ORDER BY this_.DateTime asc] --->
System.Data.SqlClient.SqlException: Column "dbo.tbl_EntityEvent.DateTime" 
is invalid in the ORDER BY clause because it is not contained in either an 
aggregate function or the GROUP BY clause.

即使我们没有设置MaxResults和FirstResult,我们也会得到类似的错误(只是没有TOP(@ p0)。

为什么这会在升级时突然发生? 为什么要在这里调用一个计数? 我该怎么做才能解决它?

已解决---------

我已经解决了。

我正在将条件上的投影设置为Row Count else代码中的位置。

0 个答案:

没有答案