2012-01-23 29 views
36

我一直在收到linq查询超时的页面错误,因为它耗时太长。它使页面无法使用。Linq-SQL超时

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

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

有什么办法可以为单个页面设置更大的时间吗?

回答

55

就找到了答案与智能感知玩:

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

这是你如何可以增加超时对每个查询的基础上查询作为应该修改连接字符串或数据的上下文。

+3

如果要将超时设置为无限期,请将其设置为零。 – vcRobe

4

汤姆古伦的回答是一个很好的答案。

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

+0

upvote的澄清 – Oxymoron

-1

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

德欧文

+1

嗨,欢迎来到SO。即使这是非常有建设性的,这不完全是一个答案,应该是一个评论。一旦你赢得了足够的声望,你可以评论。干杯! – Cthulhu

10

@汤姆Gullens答案并没有为我上EF6

工作,我不得不深入到数据库DbContext

Ecom.Database.CommandTimeout = 120;

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

+5

linq-to-sql!= EF – djv