NHibernate - 如何返回列条目的明确列表以及每个条目的计数

时间:2014-08-22 11:52:20

标签: c# nhibernate

是否可以在NHibernate中复制以下SQL查询?

SELECT Name, COUNT(Name)
FROM Table
GROUP BY Name

不幸的是,我无法让NHibernate将其作为原始sql查询执行,因为我现在的雇主不允许这样做。

我已经看到了返回链接实体计数但不包含同一表中数据计数的示例。

我目前通过使用两个查询来完成此工作。一个用于获取不同的名称列表,另一个用于获取每个名称的计数。我想将其优化为单个数据库调用。

预先感谢您提供任何帮助!

1 个答案:

答案 0 :(得分:1)

我们可以这样做:

// this would be our DTO for result
public class ResultDTO
{
    public virtual string Name { get; set; }
    public virtual int Count { get; set; }
}

这将是查询

// here we declare the DTO to be used for ALIASing
ResultDTO dto = null;

// here is our query
var result = session.QueryOver<Table>()
    .SelectList(l => l
        .SelectGroup(x => x.Name).WithAlias(() => dto.Name)
        .SelectCount(x => x.Name).WithAlias(() => dto.Count)
    )
    .TransformUsing(Transformers.AliasToBean<ResultDTO>())
    .List<ResultDTO>();