代码之家  ›  专栏  ›  技术社区  ›  Oliver Hanappi

如何通过NHibernate标准API检索唯一实体?

  •  0
  • Oliver Hanappi  · 技术社区  · 17 年前

    我的实体看起来是这样的(简化):

    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()) 因为没有结果可以改变。

    我是否可以避免使用结果转换器检索整个人员列表,然后手动从集合中取出正确的部分?


    奥利弗·哈纳皮

    1 回复  |  直到 17 年前
        1
  •  1
  •   Community Mohan Dere    9 年前

    您需要在sql请求中包含distinct。你可以找到一些信息 here . 主要是第二个答案