public override List<GroupCountResult> GetCount(ITransaction transaction,
ClassMapping mapping, DaoCriteria crit,
ICollection<AbstractGroupExpression> groupExpressions)
{
SqlDaQuery query = _sqlQueryCache.Get();
query.Sql.Append("SELECT COUNT(*) ");
if (_connDesc.NeedAsForColumnAliases())
{
query.Sql.Append("AS ");
}
query.Sql.Append(_connDesc.ColumnAliasPrefix()).
Append(COUNT_COL_ALIAS).Append(_connDesc.ColumnAliasSuffix());
GroupBysToStartOfQuery(query, groupExpressions, mapping);
query.Sql.Append(" FROM ");
query.Sql.Append(mapping.Table);
ExpressionsToQuery(query, crit, mapping);
GroupBysToEndOfQuery(query, groupExpressions, mapping);
OrdersToQuery(query, crit, mapping);
Hashtable parameters = DbCaches.Hashtables.Get();
parameters["groupBys"] = groupExpressions;
parameters["mapping"] = mapping;
SqlConnectionUtilities.XSafeQuery(_connDesc, (SqlTransaction)transaction,
query.Sql.ToString(), query.Params, ReadGroupByCount, parameters);
List<GroupCountResult> retVal = (List<GroupCountResult>) parameters["results"];
DisposeOfQuery(query);
DbCaches.Hashtables.Return(parameters);
return retVal;
}