我正在尝试为一些EF 6.0构建一个简单的C#模板。我在定义所有Entity Framework对象的同一项目中创建了模板。但是,我似乎无法使用在Entity生成器中可以找到的某些类型,特别是TypeMapper
。
这是我的实体生成器T4文件的顶部:
<#@ template language="C#" debug="false" hostspecific="true"#>
<#@ include file="EF.Utility.CS.ttinclude"#>
<#@ output extension=".cs"#>
<#
const string inputFile = @"EpicCloudDB.edmx";
#>
<#@ include file="EdmxEnumFixer.t4" #>
<#
var textTransform = DynamicTextTransformation.Create(this);
var code = new CodeGenerationTools(this);
var ef = new MetadataTools(this);
var typeMapper = new TypeMapper(code, ef, textTransform.Errors);
var fileManager = EntityFrameworkTemplateFileManager.Create(this);
var itemCollection = new EdmMetadataLoader(textTransform.Host, textTransform.Errors).CreateEdmItemCollection(inputFile);
var codeStringGenerator = new CodeStringGenerator(code, typeMapper, ef);
#>
这里没什么可疯狂的。但是,如果我创建一个模板并将其直接粘贴到它(同一个项目),则无法找到以下类型:
我只需要TypeMapper,但我不明白为什么相同的模板代码在新模板中不起作用,但在默认的EF文件中运行得很好。
这两个类都不容易找到文档。我想如果我能找到哪个程序集定义TypeMapper
我可以手动添加引用并担心以后的一般怪异,但事实证明这比我预期的要困难。
那么如何将此类型导入我的模板?在我等待答案的时候,我会通过EF 6来源。
答案 0 :(得分:5)
它似乎是在同一个.tt文件中定义的 - 在第320行附近。