作为参考,我正在关注this example,大约是首次提到EntityFrameworkTemplateFileManager
的页面的2/3。
我正在尝试编写一些t4模板,以便为数据库项目中的每个表生成插入,更新和删除存储过程。生成实际代码没有问题,我遇到的问题是生成的.sql文件与项目中的.tt文件在同一级别添加,而不是作为子项。这很烦人,因为我也有很多非生成的SP,而且我不希望生成的和非生成的混合在一起。
上面提到的网站有如下图像,展示了预期的输出(这就是我想要的):
但这就是我得到的 - 生成的EF_Insert_*.sql
文件(空白EF CRUD Procedures.sql
除外)没有被<DependentUpon>
添加到项目中并显示在Stored Procedures
目录的根目录:
我意识到这有点像整容,但有什么方法可以解决这个问题吗?这是模板,剥离后只是在文件中写表名。 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();
#>