Это очень интересный сценарий, и я проходил через него раньше, так как иногда использую набор данных в своих многоуровневых приложениях. Итак, вот решение.
Полагаю, кроме пользовательского интерфейса, все это проекты классов lib для BLL, DAL. В DAL у вас был бы конструктор набора данных, который вставляет строку подключения в app.config DAL class-lib prj. Теперь, если вам нужно сослаться на BAL выше DAL, который снова является классом lib prj, скопируйте раздел connectionStrings из app.config DAL и вставьте его в раздел connectionStrings app.Config BAL classlib prj. Здесь вы должны заметить, что имя строки подключения - это не просто myDataBaseConnStr. Это будет с подробной ссылкой на пространство имен, например, MyApp.DataLayer.DataSet.myDataBaseConnStr. Тот же процесс вы должны выполнить со слоем пользовательского интерфейса app.config или web.config. После того, как вы сделали это успешно, вы можете изменить в файле connectionString в корневом конфигурационном файле приложения уровня пользовательского интерфейса [web.config или app.config]. Таким образом, он всегда будет извлекать connectionString из уровня пользовательского интерфейса, поскольку это будет исполняемый AppDomain во время выполнения. Таким образом, вы можете изменить строку подключения и отразить ее в базовых значениях BAL и DAL.
Спасибо.