数据库项目中的t4模板 - 生成的文件不是.tt文件的子项

时间:2015-04-17 21:51:28

标签: entity-framework t4

作为参考,我正在关注this example,大约是首次提到EntityFrameworkTemplateFileManager的页面的2/3。

我正在尝试编写一些t4模板,以便为数据库项目中的每个表生成插入,更新和删除存储过程。生成实际代码没有问题,我遇到的问题是生成的.sql文件与项目中的.tt文件在同一级别添加,而不是作为子项。这很烦人,因为我也有很多非生成的SP,而且我不希望生成的和非生成的混合在一起。

上面提到的网站有如下图像,展示了预期的输出(这就是我想要的):

good

但这就是我得到的 - 生成的EF_Insert_*.sql文件(空白EF CRUD Procedures.sql除外)没有被<DependentUpon>添加到项目中并显示在Stored Procedures目录的根目录:

bad

我意识到这有点像整容,但有什么方法可以解决这个问题吗?这是模板,剥离后只是在文件中写表名。 GetAllTables()只返回一个表列表。

<#@ template debug="true" hostspecific="true" language="C#" #>
<#@ output extension=".sql" #>
<#@ SqlModelDirective processor="SqlModelDirectiveProcessor" #>
<#@ assembly name="System.Core" #>
<#@ import namespace="System.Text" #>
<#@ import namespace="System.Linq" #>
<#@ import namespace="System.IO" #>
<#@ import namespace="Microsoft.SqlServer.Dac" #>
<#@ import namespace="System.Collections.Generic" #>
<#@ import namespace="Microsoft.SqlServer.Dac.Model" #>
<#@ include file="EF.Utility.CS.ttinclude"#> 
<#
    List<TSqlObject> allTables = GetAllTables();

    var fileManager = EntityFrameworkTemplateFileManager.Create(this);  

    foreach (var table in allTables)
    {
        fileManager.StartNewFile(string.Format("EF_Insert_{0}.sql", table.Name.Parts[1]));
        WriteLine("--{0}", table.Name.Parts[1]);
    }

    fileManager.Process();        
#>

0 个答案:

没有答案