Impostare da codice la connectionString di Web.config

giovedì 26 novembre 2009 - 10.20

sanfra Profilo | Junior Member

Salve, avrei bisogno ancora una volta del vostro aiuto, ho creato delle dll(diciamo che ho suddiviso il progetto in diversi moduli) che naturalemnte andranno a finire in un unico progetto. in questi moduli(dll) io inserisco naturalemnte anche il file riguardante ling(.dbml).

Adesso quando vado nel progetto principale ad inserire queste dll il web.config

vuole il nome che c'è anche nella dll e poi gli assegno io il nome del db(in questo caso è dinamico)ma se io mi ritrovo 30 dll è devo mosificare il nome del db dovrò andare ad aprire il file web.config e modificare a mano tutte e 30 le dll, non c'è un modo più elegante per farlo?

Io ho pensato se era possibile ciclare tutti i nodi della connectionString e assegnargli in maniera dinamica(tramite un interfaccia con dei textbox dove si mettono i dati) modificare quel singolo nodo figlio.
Ho visto un'esempio(qui sul vostro sito) e ho provato a metterlo in pratica:

Il codice sorgente non è stato renderizzato qui
perchè non c'è sufficiente spazio.
Clicca qui per visualizzarlo in una nuova finestra
ma quando vado a fare il ciclo mi vede ben 4 connectionString,mentre ce ne sono solo 2

Poi ho pensato di farmi una metodo che mi legga l'xml del web,config e vada io a trovare i nodi e a scriverci dentro
Però leggevo che non era consigliabile questa strada

Spero mi possiate aiuatre

alx_81 Profilo | Guru

>ma quando vado a fare il ciclo mi vede ben 4 connectionString,mentre
>ce ne sono solo 2
ciao, potresti allegare la parte del nodo connectionstring?
--

Alessandro Alpi | SQL Server MVP
MCP|MCITP|MCTS|MCT

http://www.alessandroalpi.net
http://blogs.dotnethell.it/suxstellino
http://mvp.support.microsoft.com/profile/Alessandro.Alpi

sanfra Profilo | Junior Member

lo vorrei tanto, ma io non uso il software zip per caricare i file ma solo winrar, spero possa bastarti se lo scrivo qui:
Il codice sorgente non è stato renderizzato qui
perchè non c'è sufficiente spazio.
Clicca qui per visualizzarlo in una nuova finestra
Inoltre volevo aggiungere che io poi ho risolto(almeno penso) in questo modo:
Il codice sorgente non è stato renderizzato qui
perchè non c'è sufficiente spazio.
Clicca qui per visualizzarlo in una nuova finestra
il problema è che mi viene fuori la seguente dicitura:
Questo file è stato modificato senza utilizzare l'Editor HTML.Ricaricarlo?
Mi puoi aiutare?

alx_81 Profilo | Guru

>il problema è che mi viene fuori la seguente dicitura:
>Questo file è stato modificato senza utilizzare l'Editor HTML.Ricaricarlo?
Quando cambi il web.config applicativamente, se lo hai aperto in visual studio mentre fai le prove è normale.
Tutti i file che cambi senza usare visual studio che sono aperti correntemente in visual studio ti danno quel messaggio.
Il fatto è che cambiare il web.config non è una pratica molto da "best practices". Anche perchè considera che ogni cambiamento, butta giù il dominio applicativo corrente per poi ripristinarlo, con la conseguente attesa di scaricamente e ricaricamento. Di preciso cosa dovresti fare, qual è la situazione reale?


--

Alessandro Alpi | SQL Server MVP
MCP|MCITP|MCTS|MCT

http://www.alessandroalpi.net
http://blogs.dotnethell.it/suxstellino
http://mvp.support.microsoft.com/profile/Alessandro.Alpi

sanfra Profilo | Junior Member

la situazione è che mi ritrovo per il momento 11 dll che dovrò inserire nel progetto principale e farle funzionare, ognuno di queste dll ha il suo file dbml che punta ad ogni singolo databse che riguarda il suo modulo.

questi "pezzettini" di database andranno poi messi in un unico db che conterrà tutto il progetto sia da un punto di vista tabelle che da un punto di vista dll.

quando vado ad inserire il modulo nel progetto principale io dovrò inserire nel web.config la solita stringa di connessione ma con nomi diversi (ogni nome è il nome dei pezzettini di database) e quindi se io dovrò cam,biare un giorno il nome del db lo dovrò modificare per tutte le dll che sono presenti nel web,config, e volevo evitare questo lavoro.


Spero di essere stato chiaro e di avere un aiuto per capire come fare ad evitarlo.

alx_81 Profilo | Guru

>quando vado ad inserire il modulo nel progetto principale io
>dovrò inserire nel web.config la solita stringa di connessione
>ma con nomi diversi (ogni nome è il nome dei pezzettini di database)
>e quindi se io dovrò cam,biare un giorno il nome del db lo dovrò
>modificare per tutte le dll che sono presenti nel web,config,
>e volevo evitare questo lavoro.
Se facessi una classe "centrale" che prende dal web.config un pattern, crea al volo la connectionstring e la passa in un ipotetico costruttore comune a tutti i tuoi 11 moduli?
In questo modo potresti creare una Interfaccia comune per tutti gli 11 moduli ed ogni modulo dovrebbe implementarla. La classe centrale prende dal web.config un pattern (o anche 11 connectionstring) e le inietta nei moduli. Spero di aver capito la situazione..
--

Alessandro Alpi | SQL Server MVP
MCP|MCITP|MCTS|MCT

http://www.alessandroalpi.net
http://blogs.dotnethell.it/suxstellino
http://mvp.support.microsoft.com/profile/Alessandro.Alpi
Partecipa anche tu! Registrati!
Hai bisogno di aiuto ?
Perchè non ti registri subito?

Dopo esserti registrato potrai chiedere
aiuto sul nostro Forum oppure aiutare gli altri

Consulta le Stanze disponibili.

Registrati ora !
Copyright © dotNetHell.it 2002-2024
Running on Windows Server 2008 R2 Standard, SQL Server 2012 & ASP.NET 3.5