1

简而言之,我需要在另一个文本模板文件中运行一个文本模板文件。

详细信息: 我的问题是我们有一些 .tt 文件,它们基本上将几个 SQL 文件组合在一个地方。然而,他们陷入了困境。

  1. 架构.tt
  2. 初始生产数据.tt
  3. 测试数据.tt

基本上,TestData.tt 还包含其他两个生成的所有 .sql 文件以及其他一些 SQL 文件。InitialProduction.tt 还包含 Schema.tt 的结果 SQL 文件。

每个文件都在不同的地方使用等等。

文件内部如下所示:

<#@ output extension=".sql" #>
<#@ include file="../Schema/InitialProductionData.sql" #>
SET NOCOUNT ON
GO
use [SomeDatabase]
GO
<#@ include file="HelloWorld.sql" #>
<#@ include file="GoogleData.sql" #>
<#@ include file="YahooData.sql" #>

但为了正确运行 TestData.tt 文件,我需要先运行其他 .tt 文件。为什么我需要的是,当我运行 TestData.tt 时,它会自动按顺序运行其他的,并使用生成的脚本生成包含所有内容的最终 SQL 脚本。

4

1 回答 1

2

我认为您有两个选择:使用 inlcudes 而不是 .tt 或将生成的代码从一个模板写入 SQL 文件。

对于第一种方法,您所要做的就是将 .tt 文件的扩展名更改为 .ttinc 之类的内容,并确保它们没有设置为自动生成。这样,它们只有在从另一个文本模板中包含时才会运行。

然后,您可以像这样包含它们:

<#@ 包含文件="TestData.ttinclude" #>

另一种选择是写出生成的代码以将文件与一个主模板分开。Oleg Sych 在他的博客上写过这个。

于 2013-09-11T16:24:09.643 回答