これはアイデアがあまりにもすべてのコマンドのタイムアウトを増加させる継承テーブルアダプタの基本クラスを作成することです後半の答えの少しかもしれないが
を同じ問題を持つ人を助けるそう...かもしれませんテーブルアダプターに入れます。生成されたテーブルアダプタは有用なものを継承しないため、リフレクションを使用する必要があります。タイムアウトを変更するための公開関数を公開します。
using System;
using System.Data.SqlClient;
using System.Reflection;
namespace CSP
{
public class TableAdapterBase : System.ComponentModel.Component
{
public TableAdapterBase()
{
}
public void SetCommandTimeout(int Timeout)
{
foreach (var c in SelectCommand())
c.CommandTimeout = Timeout;
}
private System.Data.SqlClient.SqlConnection GetConnection()
{
return GetProperty("Connection") as System.Data.SqlClient.SqlConnection;
}
private SqlCommand[] SelectCommand()
{
return GetProperty("CommandCollection") as SqlCommand[];
}
private Object GetProperty(String s)
{
return this.GetType().GetProperty(s, BindingFlags.NonPublic | BindingFlags.GetProperty | BindingFlags.Instance).GetValue(this, null);
}
}
}
だからあなたの例では、なる:データセットデザイナで
[System.ComponentModel.DataObjectMethodAttribute
(System.ComponentModel.DataObjectMethodType.Select, false)]
public Scout.ScoutDataTable GetItems(string node, int rank1, int rank2)
{
ScoutTableAdapter Adapter = new ScoutTableAdapter();
Adapter.SetCommandTimeout(60);
return Adapter.GetDataBy(node, rank1, rank2);
}
デフォルトのベースクラスSystem.ComponentModel.ComponentがちょうどTableAdapterBase
がSelectCommandプロパティはnullです上記のクラスに設定しています? –
@KevRitchieおそらく私の問題だと思います。 –
こんにちは@ジョー、あなたはこれを修正するために管理できましたか? –