2011-01-05 43 views
7

我使用模板posted in this thread從包含我的DAL的類庫中的SQL Server中的幾個查找表生成C#枚舉。T4類庫中的模板和連接字符串

目前,我有模板使用的連接字符串嵌入類庫中的模板包含文件。是否有一種方便的方式讓模板從主項目(WAP)的web.config中獲取連接字符串,而不必包含物理路徑?或者有更好的方法來解決這個問題嗎?

編輯

我還考慮創建返回包含枚舉內容(這將隨後在C#,而不是在數據庫中定義)表值函數的SQL CLR組件,但我我不確定會有什麼樣的表現。不管它是否具有重要意義,顯然都取決於應用程序,但如果它是一種知道最好的避免方法,我不願意收取糟糕的路徑。

回答

10

我執行T4模板

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

其中..\..\www是在我的web.config位於相對於正在執行我的T4模板所在目錄的相對路徑時使用以下方法從web.config閱讀

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

var connStrings = config.ConnectionStrings; 
+0

我希望不必硬編碼任何類型的路徑,但似乎這不會發生。謝謝。 – 2011-01-05 21:50:08

+3

當然你需要告訴模板它的相對於你的配置的位置,但那不認爲是硬編碼......你可以將你的解決方案移動到你想要的瘋狂,只要項目之間的相對位置是相同的仍然工作。 – 2011-01-06 00:32:30