Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何使用nhibernate通过递归自连接SQL获得最佳性能_C#_Sql Server_Nhibernate - Fatal编程技术网

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

C# 如何使用nhibernate通过递归自连接SQL获得最佳性能,c#,sql-server,nhibernate,C#,Sql Server,Nhibernate,我有一个带有parentId的团队表/实体,parentId是自联接到同一个表中的id 有一个名为TopUnit的属性将递归地继续调用.Parent,直到它在名为“IsTopUnit”的团队实体上找到一个属性为止 使用nhibernate探查器,这将导致选择N+1警报。无论如何都要优化本质上是递归自连接查询的内容,以避免Select N+1行为 batchsize似乎适用于子集合,但在这种情况下似乎没有帮助,因为它完全是“同步的”,因为我不能执行递归SQL语句 我想这个问题在nhibernate

我有一个带有parentId的团队表/实体,parentId是自联接到同一个表中的id

有一个名为TopUnit的属性将递归地继续调用.Parent,直到它在名为“IsTopUnit”的团队实体上找到一个属性为止

使用nhibernate探查器,这将导致选择N+1警报。无论如何都要优化本质上是递归自连接查询的内容,以避免Select N+1行为

batchsize似乎适用于子集合,但在这种情况下似乎没有帮助,因为它完全是“同步的”,因为我不能执行递归SQL语句

我想这个问题在nhibernate之外也是有效的。在SQL中执行递归语句的最佳方法是什么。似乎您必须将其分解为多个查询。

您可以尝试此操作

查看以下内容: