【问题标题】:T4 Templates and connection strings in a class library类库中的 T4 模板和连接字符串
【发布时间】:2011-01-05 17:18:56
【问题描述】:

我正在使用模板 posted in this thread 从包含我的 DAL 的类库中的 SQL Server 中的几个查找表生成 C# 枚举。

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

编辑

我还考虑过创建一个 SQL CLR 程序集,它返回一个包含枚举内容的表值函数(然后将在 C# 中定义,而不是在数据库中),但我不确定性能会受到什么影响是。它是否重要显然取决于应用程序,但如果它是一种知道最好避免的方法,我不想在一条蹩脚的道路上收费。

【问题讨论】:

    标签: asp.net .net sql-server-2008 t4


    【解决方案1】:

    我在执行 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;
    

    【讨论】:

    • 我希望不必对任何类型的路径进行硬编码,但似乎这不会发生。谢谢。
    • 当然你需要告诉模板它相对于你的配置是如何定位的,但这不被认为是硬编码......你可以随心所欲地移动你的解决方案,只要它们之间的相对位置项目是一样的,它仍然可以工作。
    猜你喜欢
    • 1970-01-01
    • 2011-08-13
    • 2011-06-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-07-30
    相关资源
    最近更新 更多