我正在使用模板posted in this thread从包含我的DAL的类库中的SQL Server中的几个查找表生成C#枚举。
目前,我已经将模板使用的连接字符串嵌入到类库中的模板包含文件中。有没有一种方便的方法让模板从主项目(WAP)的web.config中获取连接字符串而不必包含物理路径?或者有更好的方法来解决这个问题吗?
修改
我还考虑过创建一个SQL CLR程序集,该程序集返回一个包含枚举内容的表值函数(然后在C#中定义,而不是在数据库中定义),但我不确定性能会受到什么影响是。它是否显着显然会依赖于应用程序,但是如果它是一种最好的避免 - 这种方法,我不想充斥着糟糕的道路。
答案 0 :(得分:10)
我在执行T4模板时使用以下方法从web.config
进行阅读
<# var path = Host.ResolvePath(@"..\..\www"); #>
其中..\..\www
是web.config
所在目录相对于我的T4模板执行位置的相对路径
var config = ConfigurationManager.OpenMappedExeConfiguration(
new ExeConfigurationFileMap { ExeConfigFilename = location +@"\web.config" },
ConfigurationUserLevel.None);
var connStrings = config.ConnectionStrings;