Почему область действия параметра ConnectionString всегда принудительно установлена ​​на «Приложение»? - PullRequest
1 голос
/ 06 июня 2009

Вероятно, я не первый, кто сталкивается с этой проблемой, но нигде не смог найти правильный ответ.

У меня есть приложение Windows Forms, которое использует строго типизированный DataSet. Дизайнер использует строку подключения, определенную в настройках приложения. Проблема в том, что этот параметр определен как область приложения (то есть только для чтения), и мне нужно иметь возможность изменить его во время выполнения. В конструкторе настроек, когда типом настройки является «Строка подключения», невозможно изменить область на «Пользователь». И сгенерированный набор данных не предоставляет конструктор, позволяющий выбирать строку подключения во время выполнения, он всегда использует его в настройках.

Знаете ли вы, почему MS ввела это ограничение? Есть ли у вас обходной путь?

В настоящее время я использую обходной путь, который действительно уродлив: я изменяю тип параметра на «Строка», а область действия - «Пользователь». Таким образом, я могу изменить его во время выполнения, и он отлично работает. Проблема в том, что когда мне нужно изменить набор данных в конструкторе, я должен изменить его обратно на «ConnectionString», иначе дизайнер не будет работать.

Заранее спасибо за ваши предложения!

1 Ответ

5 голосов
/ 06 июня 2009

Вы можете изменить значение параметра ApplicationScope во время выполнения. Пока сгенерированное и строго типизированное свойство доступно только для чтения, вы можете использовать:

Properties.Settings.Default["App1"] = "bbb";

После этого Properties.Settings.Default.App1 будет читать «bbb»;

Это должно позволить оставить настройки времени проектирования в покое.

Вы не можете использовать Settings.Default.Save() для настроек ApplicationScope, но это преднамеренно. Обычный пользователь не имеет прав на запись в подпапку Program Files

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...