Я никогда не был большим поклонником помещения строк подключения sql в файлы конфигурации для программного обеспечения.Пользователи имеют привычку обманывать их из любопытства или глупости (или какой-то их комбинации).Мне нравится помещать все свои строки подключения (разработка, модель, производство и т. Д.) В свойства моей библиотеки доступа к данным и включать в нее класс ConfigurationSettings, который я использую для доступа к ним на основе некоторого свойства, которое устанавливается потребляющимapplication:
public class ConfigurationSettings
{
public static string MyConnectionString
{
get
if(ConfigurationSettings.TestMode)
return Properties.Settings.Default.MyConnectionStringTest;
else
return Properties.Settings.Default.MyConnectionStringProd;
}
}
// I typically only have test and not-test. This could
// easily be some other combination of values to satisfy
// multiple environments.
public static bool TestMode { get; private set;}
}
Это позволяет мне вызывать статические свойства этого класса через общее имя и получать все строки подключения в зависимости от некоторых критериев.Это позволяет получить ваши конкретные наборы данных, сущности, любую модель данных, которую вы используете, из-за беспокойства о строках соединения и настройках, которые можно скомпилировать в .dll (и больше не нужно беспокоиться о них).Этот метод также можно изменить, чтобы получить настройки из файла app.config (который я делаю для сайтов ASP.Net) аналогичным способом.
ОБНОВЛЕНИЕ: действительно, как вы подразумеваете, «правильного» способа не существует.App.config был разработан для хранения параметров конфигурации, которые можно изменять без перестройки приложения.Настройки свойств были разработаны для хранения настроек, которые нельзя изменить.Таким образом, оба совершенно действительны.Вероятно, самый «правильный» путь - это способ, который имеет смысл как для вашего приложения, так и для вашей команды разработчиков.