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

时间:2009-10-21 09:36:31

标签: nhibernate distinct

我的实体看起来像那样(简化):

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())时结果转换器不起作用,因为没有结果要转换。

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

最诚挚的问候 Oliver Hanappi

1 个答案:

答案 0 :(得分:1)

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