我已将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代码中的位置。