2016-07-21 5 views
1

Я использую C#, .NET 4.5, VS2015.Динамическое изменение подключения адаптеров данных

Я хочу, чтобы иметь возможность динамически изменять свойство соединения динамика данных. (во время выполнения).

Глядя на подключение имущества адаптера данных, подключение является частной установка:

private global::System.Data.SqlClient.SqlConnection _connection; 

private void InitConnection() { 
      this._connection = new global::System.Data.SqlClient.SqlConnection(); 
      this._connection.ConnectionString = global::Audit.Properties.Settings.Default.LoggingConnectionString; 
     } 

Можно ли изменить подключение таблицы адаптера во время выполнения?

EDIT:

Интересно то, что для настольных адаптеров с некоторыми командами, подключение свойство является открытым, так что это не проблема изменения. Для адаптеров с командами вставки соединение является закрытым, и я не знаю, как его изменить. Конечно, я говорю о компонентах, которые перетаскиваются непосредственно из проводника сервера, чтобы спроектировать представление набора данных.

Пример для выбора команды (генерируется внутренний глобальный):

internal global::System.Data.SqlClient.SqlConnection Connection { 
      get { 
       if ((this._connection == null)) { 
        this.InitConnection(); 
       } 
       return this._connection; 
      } 

Пример для команды вставки (генерироваться как частные):

private void InitCommandCollection() { 
      this._commandCollection = new global::System.Data.IDbCommand[1]; 
      this._commandCollection[0] = new global::System.Data.SqlClient.SqlCommand(); 
      ((global::System.Data.SqlClient.SqlCommand)(this._commandCollection[0])).Connection = new global::System.Data.SqlClient.SqlConnection(global::Audit.Properties.Settings.Default.LoggingConnectionString1); 

ответ

0

я смог преодолеть это ограничение, создавая мои собственные Свойство ConnectionString в TableAdapter. Вам просто нужно убедиться, что это часть пространства имен TableAdapter.

public partial class MyTableAdapter 
{ 
    public string ConnectionString 
    { 
     set 
     { 
      if ((this._commandCollection == null)) 
      { 
       this.InitCommandCollection(); 
      } 

      for (int index = 0; index < this._commandCollection.Length; index++) 
      { 
       this._commandCollection[index].Connection.ConnectionString = value; 
      } 
     } 
    } 
}