Краткий ответ:
Объекты Connection, которые представляют зависимость от базы данных, должны быть созданы (и известны только to) уровня доступа к данным.
Длинный ответ:
Когда вы говорите «3 уровня», вы действительно имеете в виду «уровень» или «слой»?Первый предполагает жесткую границу, такую как уровень обслуживания, между каждым уровнем.Последнее является просто логическим разделением в пределах одного контекста приложения.Кроме того, определите, каким образом DAL является «отдельно скомпилированным проектом»?Он может получить доступ к файлу конфигурации для любого контекста приложения, в котором выполняется код.Если это его собственный уровень, он будет иметь какой-то сервис или что-то, что имеет конфигурацию.Если это просто слой, он может получить доступ к основной конфигурации приложения.
В идеале все, что связано с базой данных и / или зависит от нее, должно существовать только в DAL.Остальная часть домена приложения не должна беспокоиться о базе данных.