#service #polling
#Обслуживание #опрос
Вопрос:
У меня есть файл конфигурации и pollingservice с различными методами в службе опроса. Чего я хочу, так это чтобы при попадании на определенный метод в службе опроса я хотел изменить строку подключения в файле конфигурации с:
<add name="Entity" connectionString="metadata=res://*/Model.csdl|res://*/Model.ssdl|res://*/Model.msl;provider=System.Data.SqlClient;provider connection string=amp;quot;Data Source=dev;Initial Catalog=DB;Persist Security Info=True;User ID=a;Password=asdf;MultipleActiveResultSets=Trueamp;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=amp;quot;Data Source=dev_Test;Initial Catalog=DB_Test;Persist Security Info=True;User ID=a;Password=asdf;MultipleActiveResultSets=Trueamp;quot;" providerName="System.Data.EntityClient" />
Пожалуйста, помогите.
Спасибо.
Ответ №1:
Если вы действительно хотите изменить файл 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();