Свойство соединения в TableAdapters определяется как внутреннее .
internal global::System.Data.SqlClient.SqlConnection Connection
Так что, если ваш TypedDataset не находится в
та же сборка, что и у ваших главных окон
формы приложения, вы не сможете
Доступ к свойству Connection. это
проблема может появиться позже, когда вы
реорганизовать код набора данных и переместить его
в отдельный проект, который будет
производить собственную независимую сборку.
Чтобы решить эту проблему, вы можете сделать, как указано ниже.
создайте частичный класс для вашего TableAdapter и добавьте еще один конструктор помимо стандартного общедоступного конструктора без параметров. Предполагая тип TableAdapter как MyTableAdapter
public partial class MyTableAdapter
{
public MyTableAdapter(SqlConnection connection)
{
thisSetConnection(connection);
this.ClearBeforeFill = true;
}
public void SetConnection(SqlConnection connection)
{
this._connection = connection;
}
}
Вам нужно будет сделать это для столько же адаптеров таблиц, сколько у вас есть в вашем проекте. TableAdapter не имеет какого-либо общего базового класса, но благодаря тому, что они объявлены как частичные классы, мы можем сделать это способом, упомянутым выше.
Теперь во время выполнения вы можете создать экземпляр вашего TableAdapter следующим образом.
SqlConnection connection;
//create the connection here at runtime..
MyTableAdapter adapter = new MyTableAdapter(connection);
или может даже назначить его позже после создания экземпляра TableAdapter с открытым конструктором по умолчанию без параметров.
SqlConnection connection;
//create the connection here at runtime..
MyTableAdapter adapter = new MyTableAdapter();
adapter.(connection);