【问题标题】:Does this Linq query produce multiple run trips to the SQL Server?此 Linq 查询是否会产生对 SQL Server 的多次运行行程?
【发布时间】:2012-08-01 16:53:30
【问题描述】:

代码如下:

public IEnumerable<SomeItem> DescendantsAndSelf()
{
    yield return this;
    foreach (var item in Children.SelectMany(x => x.DescendantsAndSelf())
    {
        yield return item;
    }
}

我从这里得到这个代码: https://stackoverflow.com/a/4814278/184773

这是一个递归 linq 查询。我想实现这一点,但担心它会使我的服务器停机。你知道这是否会对服务器执行多次运行行程吗?

【问题讨论】:

  • 这里根本没有显示 SQL Server。 SQL 部分从何而来?这看起来更有可能是 XML...请提供更多上下文。
  • @JonSkeet - 不是 xml,他链接到你自己的代码......你不认识吗? :)
  • @gilly3:我当时没有,没有:) 但是我仍然看不到 SQL Server 的作用。目前的答案只能是“也许”。
  • 最简单的了解方法是检查。打开您的 SQL Server Profiler 并查看正在执行的查询数。
  • 我认为最初的问题 (stackoverflow.com/a/4814278/184773) 是指 sql server。现在我看了一下 - 它根本不指代 sql server。我会删除这个问题。

标签: c# sql-server linq-to-sql linq-to-entities


【解决方案1】:

如果您只想进行一次调用,您可以使用recursive CTE 在 SQL 中实现递归查询,并将其作为可从 LINQ 调用的存储过程公开给您的应用程序。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-11-17
    相关资源
    最近更新 更多