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