Если вы используете xsds / адаптеры, вам нужно вручную установить строку подключения адаптера при запуске приложения. Если у вас есть ваши адаптеры в отдельной библиотеке, вам нужно перегрузить конструктор адаптера подписью, которой вы можете передать connectionString (читайте ниже, если это так). Первая строка подключения, которую вы использовали для создания xsd, кэшируется.
Если это так, выполните следующие действия:
Допустим, у вас есть User.xsd. Щелкните правой кнопкой мыши, затем просмотрите код. Вы заметите, что User.cs создан, если вы развернете (+) xsd.
Возможно, у вас сгенерирован этот код:
namespace Adapters {
public partial class User
{
}
}
Вы должны добавить следующее:
namespace Adapters.UserTableAdapters
{
public partial class UsersTableAdapter : global::System.ComponentModel.Component
{
public UsersTableAdapter(string connectionString)
{
this._clearBeforeFill = true;
this._connection = new System.Data.SqlClient.SqlConnection();
this._connection.ConnectionString = connectionString;
}
}
}
Теперь, когда вы инициализируете UsersTableAdapter, вы передаете ему строку подключения.
Поскольку я использую connectionString по всему веб-сайту, и мне неудобно продолжать читать для него web.config, я создал этот простой класс:
namespace Data
{
public class DataModule
{
private static string _connectionString = String.Empty;
public static string ConnectionString
{
get
{
if (_connectionString == String.Empty)
throw new Exception("DataModule not initialized");
return _connectionString;
}
}
public static void initialize(string connectionString)
{
_connectionString = connectionString;
}
}
}
При запуске приложения я звоню
DataModule.Initialize(System.Configuration.ConfigurationManager.ConnectionStrings["ConnectionString"].ConnectionString);
Обратите внимание, что этот класс поддерживает только 1 connectionString. Вы можете легко изменить его для поддержки многих.
Мы можем помочь вам больше, если вы лучше описываете свое окружение =)