我的实体看起来是这样的(简化):
public class Person
{
public Guid Id { get; set; }
public string Name { get; set; }
public IList<Department> Departments { get; set; }
}
public class Department
{
public Guid Id { get; set; }
public string Name { get; set; }
}
一个人包含两个或多个部门,其名称包含查询使用的相同字符序列。因此,同一个人会被返回多次。为了让这更令人惊讶,我知道我可以使用
criteria.SetResultTransformer(Transformers.DistinctRootEntity);
但这只在结果未分页时有效。
当我分页结果时,我不仅需要得到第一页,还需要知道总共有多少个实体。不幸的是,调用时结果转换器不工作
criteria.SetProjection(Projections.RowCount())
因为没有结果可以改变。
我是否可以避免使用结果转换器检索整个人员列表,然后手动从集合中取出正确的部分?
奥利弗·哈纳皮