【问题标题】:Linq-to-SQL TimeoutLinq-to-SQL 超时
【发布时间】:2012-02-16 16:35:38
【问题描述】:

我在我的一个页面上收到一个错误,即 linq 查询已超时,因为它花费的时间太长。它使页面无法使用。

这是一个报告页面,管理员每天只能访问一次。根本无法避免修剪这个查询,它只需要对大量数据进行排序。

我读到的解决这个问题的方法是增加数据上下文中的超时属性,但我想避免这样做,因为它会改变整个网站。

有没有办法为单个页面设置更大的超时时间?

【问题讨论】:

  • 嗨,Tom,我知道这已经有一段时间了,但是,当您问这个问题时,我想知道您使用 EF 吗?

标签: c# asp.net linq-to-sql timeout


【解决方案1】:

刚刚找到了玩智能感知的答案:

using (MainContext db = new MainContext())
{
    db.CommandTimeout = 3 * 60; // 3 Mins
}

这是您可以根据修改连接字符串或数据上下文来增加每个查询的查询超时的方法。

【讨论】:

  • 如果你想无限期设置超时设置为零。
【解决方案2】:

@Tom Gullens 在EF6 上的回答对我不起作用

我不得不深入了解DbContext上的数据库

Ecom.Database.CommandTimeout = 120;

希望这可以为您节省一些时间。

【讨论】:

  • linq-to-sql != EF
  • 我将 EF 与 Linq 一起使用并使用 context.Database.CommandTimeout = 120; 解决了我的问题。谢谢
【解决方案3】:

Tom Gullen 的回答很好。

另一位受访者提到在连接字符串中设置连接超时。
我想提醒一下,连接字符串的连接超时属性不是命令超时。当您考虑它时,它会更加明显。这是一个常见的错误。

【讨论】:

    【解决方案4】:

    这是 .Net 4.5 的最新语法。

        MyDbContext context = new MyDbContext();
        context.Database.SetCommandTimeout(300);
    

    【讨论】:

      【解决方案5】:

      在增加 SQL 超时之前,总是值得评估您的索引策略。根据我的经验,对索引良好的表和列的查询很少会超时。

      欧文

      【讨论】:

      • 嗨,欢迎来到 SO。即使这是非常有建设性的,它也不完全是一个答案,应该是一个评论。一旦您获得足够的声誉,您就可以发表评论。干杯!
      猜你喜欢
      • 1970-01-01
      • 2015-01-23
      • 2019-03-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-11-12
      相关资源
      最近更新 更多