是否可以在NHibernate中复制以下SQL查询?
SELECT Name, COUNT(Name)
FROM Table
GROUP BY Name
不幸的是,我无法让NHibernate将其作为原始sql查询执行,因为我现在的雇主不允许这样做。
我已经看到了返回链接实体计数但不包含同一表中数据计数的示例。
我目前通过使用两个查询来完成此工作。一个用于获取不同的名称列表,另一个用于获取每个名称的计数。我想将其优化为单个数据库调用。
预先感谢您提供任何帮助!
答案 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>();