3
我们正在构建一个查询服务,它需要解析用户的搜索词并生成一种形式的SQL(不是T-SQL,但是是一种专有的类SQL查询语言)它。 要生成SQL,我们正在研究T4模板。使用t4模板在运行时生成内存中的SQL
我看了一下Creating T4 templates at runtime (build-time)处的另一个问题,我理解了基本思想;然而我们需要的是不是物理文件输出,而是包含最终SQL语句的简单内存字符串。 这可能吗?
我有第二个问题,这更重要:考虑到我们需要在T4模板文件中生成SQL的相当复杂的逻辑时,这个T4的速度有多快。 谢谢。
谢谢!这样可行!它也向我展示了T4模板并不适合我们试图实现的目标。如果我们不需要文件,你认为生成SQL是否可行?对我来说,似乎我们必须将SQL生成逻辑放在一个单独的类中,而T4只是麻烦的处理。只需使用一个StringBuilder或其他东西。 – John
我喜欢T4,但我不确定它是否是从表达式生成高度动态SQL的正确工具。如果你认为看起来很麻烦,并且字符串生成器是最好的,那么去StringBuilder。没有必要为了它而使用T4。但是在某些情况下,运行时模板可能非常有用。例如,如果你喜欢混合静态内容和动态内容。 – FuleSnabel
同意FuleSnabel,动态和静态的组合是甜蜜点。如果你的sql-ish语言中几乎每个元素都是可变的,这取决于输入的搜索词,那么你真的只是将一个ADT从一个具体语法翻译成另一个。另一方面,如果在输出sql中有重要的样板文件,并且它只是通过查询条件进行参数化,那么T4是一个不错的选择。 – GarethJ