Немножко вне рутины...
я не держу все нити в голове.
-----
Основная проблема в шаблонах - объем кода и сложность логики генерации.
Любое сокращение рассматриваемого объема кода или упрощение логики генерации - есть дело полезное и оправданное.
Потому код режется на более-менее понятные куски и пихается в разные шаблоны - до уровня понимабельности.
Когда все разобрано - надо собрать порожденный текст в кучку.
Так вот то что обсуждается - каким образом уменьшить затраты на собирание этого текста.
Затраты есть трудовые - количество времени на внесение изменений в существующие шаблоны.
И затраты есть технические - количество задействованных стреамов, памяти и общее время исполнения.
Когда ты, или кто еще, предлагаешь вариант имплементации Я больше всего думаю об том, насколько больше/меньше ручной работы потребуется в случае внесения изменений. Во вторую очередь - как оно отразится на ресурсах системы.
Вот тебе и было предложено оценить трудозатраты в предлагаемом тобою варианте. Т.е. вместо:
<#@ template language="C#" inherits="Templates.Sql.TSqlTemplateBase" #><#@ assembly name="System.Core" #><#@ import namespace="System.Linq" #><#@ import namespace="System.Text" #><#@ import namespace="System.Collections.Generic" #>WITH A AS ( <# GetResult("B2"); #> )
SELECT * FROM A
написать что-то вида:
<#@ template language="C#" inherits="Templates.Sql.TSqlTemplateBase" #><#@ assembly name="System.Core" #><#@ import namespace="System.Linq" #><#@ import namespace="System.Text" #><#@ import namespace="System.Collections.Generic" #><# writer.StoreData(typeof(B2)) // B2 tut, odnako, nedostupno - est' IB...#>WITH A AS ( <# string temp = b2.TransformText(); stream.Write(temp); #> ) <# // tut ne slozhno, no nado pojasnit' kuda budet pisat'sja... #>
SELECT * FROM A <#+ new StreamWriter stream { get { return base.SW; } } // :) #> // что будет на вyходе?
Ну да - глупостей Я там намеренно налепил немеряно... и мог бы добавить и еще...
Но это чисто для индикации того, что код шаблона нужен как можно более простым, с удалением всего что мешает понимать каким будет результат.