在什么程序集中是System.Data.Entity.ModelConfiguration.Mappers.TypeMapper定义的?

时间:2014-01-09 20:47:11

标签: .net entity-framework t4

我正在尝试为一些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);
#>

这里没什么可疯狂的。但是,如果我创建一个模板并将其直接粘贴到它(同一个项目),则无法找到以下类型:

  1. TypeMapper
  2. CodeStringGenerator
  3. EdmMetadataLoader
  4. 我只需要TypeMapper,但我不明白为什么相同的模板代码在新模板中不起作用,但在默认的EF文件中运行得很好。

    这两个类都不容易找到文档。我想如果我能找到哪个程序集定义TypeMapper我可以手动添加引用并担心以后的一般怪异,但事实证明这比我预期的要困难。

    那么如何将此类型导入我的模板?在我等待答案的时候,我会通过EF 6来源。

1 个答案:

答案 0 :(得分:5)

它似乎是在同一个.tt文件中定义的 - 在第320行附近。