如何使用nhibernate使用递归自连接SQL获得最佳性能

我有一个带有parentId的Team表/实体,它是一个自己加入同一个表的id。

有一个名为TopUnit的属性将递归调用.Parent直到它在Team实体上找到一个名为“IsTopUnit”的属性

使用nhibernate探查器,这现在导致选择N + 1警报。 无论如何,优化什么本质上是一个递归自连接查询,以避免选择N + 1行为。

batchsize似乎适用于子集合,但它似乎没有帮助在这种情况下因为它所有“同步”因为我不能做一个递归SQL语句。

我想这个问题在nhibernate之外也是有效的。 在SQL中执行递归语句的最佳方法是什么。 看起来你不得不把它分解成多个查询。

你可以试试这个http://ayende.com/Blog/archive/2009/08/28/nhibernate-tips-amp-tricks-efficiently-selecting-a-tree.aspx