У меня есть DataSet с QueriesTableAdapter. Чтобы управлять SqlCommand.CommandTimeout, я добавил частичный класс QueriesTableAdapter с открытым методом ChangeTimeout.
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 с уникальным именем. Например, если у меня есть DataTable с именем Person и TableAdaper с именем PersonTableAdapter, я должен написать частичный класс PersonTableAdapter так же, как я написал класс QueriesTableAdaper. У меня есть сотни DataTables с уникальными именами TableAdapter. Я не хочу создавать частичный класс для каждого из них. Как я могу получить к базовым объектам SqlCommand частичного класса глобальным способом?