2011-01-05 9 views
7

Sto utilizzando il modello posted in this thread per generare enumerazioni C# da un paio di tabelle di ricerca in SQL Server all'interno di una libreria di classi che contiene il mio DAL.T4 Modelli e stringhe di connessione in una libreria di classi

Al momento, ho la stringa di connessione utilizzata dai modelli incorporati e un modello include il file nella libreria di classi. C'è un modo conveniente per fare in modo che il template prenda la stringa di connessione dal web.config del progetto principale (WAP) senza dover includere un percorso fisico? O c'è un modo migliore per avvicinarsi a questo?

Modifica

Ho anche considerato la creazione di un assembly CLR SQL che restituisce una funzione con valori di tabella che contiene i contenuti enum (che sarebbe poi essere definite in C#, non nel database), ma io' Non sono sicuro di quale sarebbe stata la performance. Che sia significativo o meno sarà ovviamente dipendente dall'applicazione, ma non mi piacerebbe addebitare un percorso scadente se è un approccio che eviti di meglio evitare.

risposta

10

ho usato il seguente approccio per la lettura dal web.config durante l'esecuzione del modello T4

<# var path = Host.ResolvePath(@"..\..\www"); #> 

dove ..\..\www è il percorso relativo alla directory in cui il mio web.config si trova in relazione al punto in cui è in esecuzione il mio modello T4

var config = ConfigurationManager.OpenMappedExeConfiguration(
    new ExeConfigurationFileMap { ExeConfigFilename = location [email protected]"\web.config" }, 
    ConfigurationUserLevel.None); 

var connStrings = config.ConnectionStrings; 
+0

Speravo di non dover seguire percorsi di codice rigido di alcun tipo, ma sembra che questo non accadrà. Grazie. –

+3

ovviamente devi dire al template come si trova rispetto alla tua configurazione, ma questo non è considerato hardcoding ... puoi spostare la tua soluzione come folle, a patto che la posizione relativa tra i progetti sia la stessa ancora lavoro. –

Problemi correlati