ORM可以处理递归

时间:2012-05-23 01:15:35

标签: c# sql sql-server orm

我使用的是C#ASP.NET,并要求在整个应用程序中使用递归。我目前正在使用Linq to Entities并在线搜索,但无法找到并且执行递归查询的方式。我不知道递归会有多少级别。

2 个答案:

答案 0 :(得分:1)

我有一个类似的问题需要解决,最后我编写了一个帮助函数,该函数递归我的数据源,并按顺序返回包含所有项目的IEnumerable。然而,在我的情况下,数据源是线性的。如果你的树结构更多,并且必须以层次结构显示,那么这将无法正常工作。

答案 1 :(得分:0)

我不知道你遇到了什么问题,我不知道其他ORM在做什么。

我认为NHibernate应该直接解决大部分问题。

  • 使用延迟加载:孩子们懒得加载。您不需要像递归查询这样的东西,这在SQL中是不可能的。
  • 使用延迟加载进行导航可以在两个方向上进行。因此,您可以使用简单查询从数据库中获取节点并导航到其父节点。
  • 在许多情况下,为递归图添加一些额外的冗余是有意义的。例如,对根节点的引用,其允许查询具有至少一个与标准匹配的节点的树。或节点的深度(与根的距离)。或者子节点的数量等。无论您的查询需要什么。