私は、QueriesTableAdapterを持つDataSetを持っています。 SqlCommand.CommandTimeoutを制御するために、私はChangeTimeoutというパブリックメソッドを持つQueriesTableAdapterという部分クラスを追加しました。Control TableAdapterコマンドのタイムアウトがグローバルに
partial class QueriesTableAdapter
{
public void ChangeTimeout(int timeout)
{
foreach (System.Data.SqlClient.SqlCommand cmd in CommandCollection)
{
cmd.CommandTimeout = timeout;
}
}
}
私が持っているすべてのデータセットには、QueriesTableAdapterがあります。実行する前にCommandTimeoutを設定できます。
using (NameSpace.DataSet.DataSetTableAdapters.QueriesTableAdapter ta =
new NameSpace.DataSet.DataSetTableAdapters.QueriesTableAdapter())
{
ta.ChangeTimeout(3600);
ta.DoSomething();
}
"QueriesTableAdapter"は、DataSetデザイナーで名前が付けられているため、ほとんどの場合、これがうまくいきます。私が実行している問題は、一意の名前が付けられたTableAdaptersです。たとえば、Personという名前のDataTableとPersonTableAdapterというTableAdaperがある場合、QueriesTableAdaperクラスを作成したのと同じ方法でPersonTableAdapterの部分クラスを作成する必要があります。一意のTableAdapter名を持つ数百のDataTableがあります。私はそれぞれの部分クラスを作成したくありません。部分的なクラスの基になるSqlCommandオブジェクトをグローバルに取得するにはどうすればよいですか?
優秀!私も同じ問題がありました。あなたのソリューションは機能します。 –
最後の行コマンド[0] .CommandTimeout = timeout;を置き換えました。 TableAdapterで複数のメソッドを処理するには、次のようにします。 foreach(コマンドでSqlCommand sc) { sc.CommandTimeout = timeout; } – riaandelange