代码之家  ›  专栏  ›  技术社区  ›  efdee

使用NHibernate时限制结果数量

  •  1
  • efdee  · 技术社区  · 17 年前

    我知道这是由于DistinctRootEntityResultTransformer造成的,但我想知道其他人如何避免仅仅为了获得构建我的3个实体所需的6行而获得1000行。

    2 回复  |  直到 17 年前
        1
  •  4
  •   Gareth Davis    17 年前

    我的答案可能不是100%准确,因为我是Java Hibernate类型的人,但我猜NHibernate的设计与Java表亲完全相同。

    Hibernate承诺查询结果中的项数将与查询返回的行数完全相等。这一切都很好,因为通常查询会为每个实体返回一行,当查询连接到另一个表并产生笛卡尔积时就会出现问题。

    1. 从查询中删除任何“联接”条件/子句。如果它们只是为了性能而包含,这可能很容易,请注意,它们可以被替换为不会创建连接的“fetch”子句
    2. 在最终sql的where子句中为创建子查询的条件添加sql限制

    请注意,这并不特别适用于hibernate或nhibernate,paign连接的结果集是完全不可能的(没有蛮力和无知)

    希望这有帮助

        2
  •  0
  •   Andy White    17 年前

    推荐文章