изменение строк подключения во время выполнения - PullRequest
0 голосов
/ 11 ноября 2011

У меня есть файл конфигурации и служба опросов с разными методами в службе опросов.Я хочу, чтобы при обращении к определенному методу в службе опроса я хотел изменить строку подключения в файле конфигурации с:

<add name="Entity" connectionString="metadata=res://*/Model.csdl|res://*/Model.ssdl|res://*/Model.msl;provider=System.Data.SqlClient;provider connection string=&quot;Data Source=dev;Initial Catalog=DB;Persist Security Info=True;User ID=a;Password=asdf;MultipleActiveResultSets=True&quot;" providerName="System.Data.EntityClient" />

на следующее:

 <add name="Entity" connectionString="metadata=res://*/Model.csdl|res://*/Model.ssdl|res://*/Model.msl;provider=System.Data.SqlClient;provider connection string=&quot;Data Source=dev_Test;Initial Catalog=DB_Test;Persist Security Info=True;User ID=a;Password=asdf;MultipleActiveResultSets=True&quot;" providerName="System.Data.EntityClient" />

Пожалуйста, помогите.

Спасибо.

1 Ответ

0 голосов
/ 11 ноября 2011

Если вы действительно хотите изменить файл app.config, вы можете сделать это:

  var config = ConfigurationManager.OpenExeConfiguration(ConfigurationUserLevel.None);

  config.ConnectionStrings.ConnectionStrings["Entity"].ConnectionString = YourNewConnectionString;
  config.Save();

Если вам нужно только изменить источник данных, это внутренняя строка соединения, и вы не хотите анализировать строку соединения сущности, вы можете использовать строители строки соединения следующим образом:

var entityBuilder = new EntityConnectionStringBuilder(ConfigurationManager.ConnectionStrings["Entity"].ConnectionString);
var sqlBuilder = new SqlConnectionStringBuilder(entityBuilder.ProviderConnectionString);

sqlBuilder.DataSource = "dev_Test";

entityBuilder.ProviderConnectionString = sqlBuilder.ToString();

var connectionString = entityBuilder.ToString();
...