2011-01-05 8 views
7

Używam szablonu posted in this thread do generowania nagłówków C# z kilku tabel wyszukiwania w programie SQL Server w bibliotece klas zawierającej mój DAL.T4 Szablony i ciągi połączeń w bibliotece klas

W tej chwili mam ciąg połączenia używany przez osadzone szablony, a szablon zawiera plik w bibliotece klas. Czy istnieje wygodny sposób, aby szablon pobrał ciąg połączenia z pliku web.config głównego projektu (WAP) bez konieczności dołączania ścieżki fizycznej? Czy istnieje lepszy sposób podejścia do tego?

Edit

mam uznać również stworzenie zespołu SQL CLR, który zwraca funkcja wycenione tabela zawierającej treści enum (które byłyby następnie zdefiniowane w C#, a nie w bazie danych), ale I” nie jestem pewien, jaki byłby efekt wydajności. To, czy jest to znaczące, czy nie, będzie oczywiście zależne od aplikacji, ale nie chciałbym obciążać cię bzdurną ścieżką, jeśli jest to metoda, której najlepiej unikniesz.

Odpowiedz

10

użyłem następujące podejście do czytania z web.config podczas wykonywania szablonu T4

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

gdzie ..\..\www jest względna ścieżka do katalogu, w którym moja web.config znajduje sie w stosunku do miejsca, gdzie mój szablon T4 jest wykonywany

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

var connStrings = config.ConnectionStrings; 
+0

Miałem nadzieję, że nie będę musiał mieć twardych ścieżek kodowych, ale wygląda na to, że tak się nie stanie. Dzięki. –

+3

oczywiście musisz podać szablonowi, w jaki sposób znajduje się on w stosunku do twojej konfiguracji, ale to nie jest uważane za hardcoding ... możesz przenieść swoje rozwiązanie tak szalone, jak chcesz, o ile relatywne położenie pomiędzy projektami jest takie samo, wciąż pracuję. –