我有一个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时要修改的错误超时值吗?
答案 0 :(得分:1)
ConnectionTimeout
和CommandTimeout
之间存在差异,CommandTimeout
指定在放弃之前尝试连接到Sql服务器时等待的时间,{{1}}指定等待命令的时间/在放弃之前运行查询。请尝试设置{{1}}:http://msdn.microsoft.com/en-us/library/system.data.linq.datacontext.commandtimeout.aspx