T4类库中的模板和连接字符串

3Da*_*ave 7 .net asp.net t4 sql-server-2008

我正在使用此线程中发布的模板从包含我的DAL的类库中的SQL Server中的几个查找表生成C#枚举.

目前,我已经将模板所使用的连接字符串嵌入到类库中的模板包含文件中.有没有一种方便的方法让模板从主项目(WAP)的web.config中获取连接字符串而不必包含物理路径?或者有更好的方法来解决这个问题吗?

编辑

我还考虑创建一个SQL CLR程序集,它返回一个包含枚举内容的表值函数(然后在C#中定义,而不是在数据库中定义),但我不确定性能是什么.它是否显着显然会依赖于应用程序,但是如果它是一个知道最好的 - 避免 - 这种方法,我讨厌收费.

Pau*_*erø 10

web.config在执行T4模板时使用以下方法进行读取

<# var path = Host.ResolvePath(@"..\..\www"); #>
Run Code Online (Sandbox Code Playgroud)

在哪里..\..\www是我所在目录的相对路径与web.config我的T4模板的执行位置有关

var config = ConfigurationManager.OpenMappedExeConfiguration(
   new ExeConfigurationFileMap { ExeConfigFilename = location +@"\web.config" },
   ConfigurationUserLevel.None);

var connStrings = config.ConnectionStrings;
Run Code Online (Sandbox Code Playgroud)

  • 当然你需要告诉模板它相对于你的配置是如何定位的,但那不被认为是硬编码...你可以随心所欲地移动你的解决方案,只要项目之间的相对位置是相同的,它仍然会工作. (3认同)