Könntest du machen wenn es viele Parameter sind.
Wir hatten in einem größeren Asp.net Projekt auch einen Aufbau der dem von dir oben beschrieben wohl recht ähnlich war. Da gab es eine UserSession welche unter anderem den Connectionstring gehalten hat und dann überall benutzt wurde. Das hat auch alles wunderbar funktioniert. Das Problem war aber als wir später bei einem anderem Projekt ein paar kleine Teile davon rausziehen wollten um sie wiederzuverwenden brauchte man auch diese UserSession was dann wieder einen ziemlichen Rattenschwanz nach sich gezogen hat/hätte.
In einem späteren Projekt, was aber kein Asp.Net sondern Silverlight + WCF Sevices war haben wir das dann anders gemacht und den Connection String zwar auch am Principal (also im Prinzip wieder sowas wie die UserSession) gehalten, das aber nur in der obersten Schicht. Nach unten wurde er dann meist im C-Tor durchgereicht.
Das heißt wenn nun einer der Services in der obersten Schicht auf ein Bl Objekt zugreifen will muss er diesem beim anlegen den Connection String im Construktor übergeben.
Meistens fährt man am Besten damit wenn man die Dinge so einfach wie möglich gestaltet.