更改DataContext ConnectionTimeout不会影响可观察的超时

时间:2013-06-30 22:31:14

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

我有一个System.Data.Linq.DataContext对象,ConnectionTimeout属性设置为1秒,但连接仍然需要30秒才能返回异常。

以下是使用StopWatch输出显示问题的代码:

Debug.WriteLine("!! Method start");
Stopwatch sw = Stopwatch.StartNew();

MyDataClassesDataContext dc = new MyDataClassesDataContext();

Debug.WriteLine("!! Connection.ConnectionTimeout is: " + dc.Connection.ConnectionTimeout);
// Output is: !! Connection.ConnectionTimeout is: 1

Debug.WriteLine("!! CommandTimeout is: " + dc.CommandTimeout);
// Output is: !! CommandTimeout is: 1

try
{
    string s = (from rows in dc.MyTable
                where rows.MyValue == 3
                select rows.MySecondValue).SingleOrDefault();

    return s;
}
catch (Exception)
{
    sw.Stop();
    Debug.WriteLine("!! Method ended after " + sw.Elapsed.Seconds + " seconds");
    // Output is: !! Method ended after 27 seconds

    return null;
}

使用连接字符串将ConnectionTimeout属性设置为1。它在连接之前似乎是1,所以它应该在1秒后超时,但需要27秒。这是使用LINQ to SQL时要修改的错误超时值吗?

1 个答案:

答案 0 :(得分:1)

ConnectionTimeoutCommandTimeout之间存在差异,CommandTimeout指定在放弃之前尝试连接到Sql服务器时等待的时间,{{1}}指定等待命令的时间/在放弃之前运行查询。请尝试设置{{1}}:http://msdn.microsoft.com/en-us/library/system.data.linq.datacontext.commandtimeout.aspx