我的实体看起来像这样(简化):
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; }
}
我正在通过标准 api 为所有具有某个名称的部门的人查询数据库,该名称应该与类似模式匹配。
碰巧一个人包含两个或多个部门,其名称包含查询使用的相同字符序列。因此,同一个人被多次返回。为了抑制这一点,我知道我可以使用criteria.SetResultTransformer(Transformers.DistinctRootEntity);
,但这只有在结果没有被分页时才有效。
当我对结果进行分页时,我不仅需要获取第一页,还需要知道总共有多少实体。不幸的是,结果转换器在调用时不起作用,criteria.SetProjection(Projections.RowCount())
因为没有要转换的结果。
我能否以某种方式避免使用结果转换器检索整个人员列表,然后手动从集合中取出正确的部分?
最好的问候
奥利弗·哈纳皮