1

プロパティが 1 秒に設定されたSystem.Data.Linq.DataContextオブジェクトがありConnectionTimeoutますが、接続が例外を返すのにまだ 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 を使用するときに変更するタイムアウト値が間違っていますか?

4

1 に答える 1

1

ConnectionTimeoutSql サーバーへの接続を試行するときに待機する時間をCommandTimeout指定する と、コマンド/クエリの実行を待機する時間を指定するには違いがあります。CommandTimeout代わりに設定してみてください: http://msdn.microsoft.com/en-us/library/system.data.linq.datacontext.commandtimeout.aspx

于 2013-07-01T18:49:30.780 に答える