本主题概述了随 Visual Studio 2010 提供的“ADO.NET EntityObject 生成器”模板,还演示了如何自定义文本模板。 EntityObject 派生的实体类(对象层代码)。
<模型名称>.tt 模板输出一个源文件 <模型名称>.cs(或.vb),该源文件出现在解决方案资源管理器中的 <模型名称>.tt 的下面。
<模型名称>.tt 文件代码概述
实体框架实用工具 .ttinclude 文件。
<#@ template language="VB" debug="false" hostspecific="true"#> <#@ include file="EF.Utility.VB.ttinclude"#> <#@ output extension = ".vb" #>
- <#@ template language="C#" debug="false" hostspecific="true"#>
- <#@ include file="EF.Utility.CS.ttinclude"#>
- <#@ output extension=".cs"#>
例如,此类型确定是否将 Camel 大小写格式用于字段名称,或确定是否将 AddTo 方法添加到生成代码的类型化对象上下文类中。
<# Dim userSettings As UserSettings = New UserSettings With _ { _ .SourceCsdlPath = "SchoolModel.edmx", _ .ReferenceCsdlPaths = new string () {}, _ .FullyQualifySystemTypes = True, _ .CreateContextAddToMethods = True, _ .CamelCaseFields = False _ } ApplyUserSettings(userSettings) #>
- <#
- UserSettings userSettings =
- new UserSettings
- {
- SourceCsdlPath = @"SchoolModel.edmx",
- ReferenceCsdlPaths = new string[] {},
- FullyQualifySystemTypes = true,
- CreateContextAddToMethods = true,
- CamelCaseFields = false,
- };
- ApplyUserSettings(userSettings);
- #>
还将初始化一些局部变量。
<# Dim loader As New MetadataLoader(Me) Dim ef As New MetadataTools(Me) Dim region As New CodeRegion(Me) Dim code As New CodeGenerationTools(Me) With {.FullyQualifySystemTypes = userSettings.FullyQualifySystemTypes, .CamelCaseFields = userSettings.CamelCaseFields} ItemCollection = loader.CreateEdmItemCollection(SourceCsdlPath, ReferenceCsdlPaths.ToArray()) ModelNamespace = loader.GetModelNamespace(SourceCsdlPath) Dim namespaceName As String = code.VsNamespaceSuggestion() UpdateObjectNamespaceMap(namespaceName) #>
- <#
- MetadataLoader loader = new MetadataLoader(this);
- MetadataTools ef = new MetadataTools(this);
- CodeRegion region = new CodeRegion(this);
- CodeGenerationTools code = new CodeGenerationTools(this){FullyQualifySystemTypes = userSettings.FullyQualifySystemTypes, CamelCaseFields = userSettings.CamelCaseFields};
- ItemCollection = loader.CreateEdmItemCollection(SourceCsdlPath, ReferenceCsdlPaths.ToArray());
- ModelNamespace = loader.GetModelNamespace(SourceCsdlPath);
- string namespaceName = code.VsNamespaceSuggestion();
- UpdateObjectNamespaceMap(namespaceName);
- #>
以下是写出到 <模型名称>.cs 或 <模型名称>.vb 文件的代码的说明:
- EDM 关系元数据。
-
<#=Accessibility.ForType(container)#> Partial Class <#=code.Escape(container)#> Inherits ObjectContext
- <#=Accessibility.ForType(container)#> partial class <#=code.Escape(container)#> : ObjectContext
Public Partial Class SchoolEntities Inherits ObjectContext