TTINCLUDE-Datei (Entity Framework-Hilfsprogramm)
Dieses Thema bietet eine Übersicht über die TTINCLUDE-Datei, die Hilfsprogrammklassen enthält, die den Codegenerierungsprozess der ADO.NET-Vorlagen unterstützen. Diese Datei wird von den Vorlagen Vorlage "ADO.NET EntityObject Generator" und Vorlage "ADO.NET-Entitäts-Generator mit Selbstnachverfolgung" verwendet. Die TTINCLUDE-Datei sollte nicht geändert werden. Sie können jedoch die in dieser Datei definierten Hilfsfunktionen in eigenen Vorlagen verwenden.
Die Visual Basic- und C#-Versionen der TTINCLUDE-Datei werden mit Microsoft Visual Studio 2010 im Verzeichnis "<Visual Studio-Installationspfad>\Common7\IDE\Extensions\Microsoft\Entity Framework Tools\Templates\Includes" installiert.
Verwenden Sie die Include-Direktive, um die Datei in andere Textvorlagen einzubinden. Beim Hinzufügen der Include-Direktive zu einer Textvorlage, führt das System die öffentlichen APIs der eingebundenen Datei mit dem Code in der Textvorlage zusammen. Die Include-Direktive erfordert einen Dateinamen mit dem vollständigen Pfad oder nur den Namen der eingebundenen Datei. Wenn Sie nur den Namen angeben, sucht das Textvorlagen-Transformationsmodul die Datei an bekannten Speicherorten. Weitere Informationen finden Sie unter How to: Include Files in Text Templates. Im folgenden Beispiel wird nur der Name der TTINCLUDE-Datei angegeben:
<#@ include file="EF.Utility.CS.ttinclude"#>
In TTINCLUDE definierte Klassen
In Textvorlagen werden die Hilfsfunktionen in Klassenfunktionsblöcken eingeschlossen. Die Klassenfunktionsblöcke stehen zwischen den Tags <#+ und #>. Im Code dieser TTINCLUDE-Datei werden .NET Framework-Typen verwendet. Daher befinden sich die entsprechenden Assemblys und die .NET Framework-Namespaces am Anfang der Datei. Weitere Informationen zur Verwendung von Textvorlagen finden unter Generating Artifacts.
Im Folgenden finden Sie eine Liste einiger öffentlicher Klassen, die in der Datei "EF.Utility.CS.ttinclude" definiert werden, sowie kurze Beispiele für die Verwendung der Klassen in den Vorlagen ADO.NET EntityObject Generator und ADO.NET-Entitäts-Generator mit Selbstnachverfolgung.
CodeGenerationTools – Helfen beim Erstellen von ordnungsgemäß formatiertem und funktionalem Quellcode.
Wenn der entiy
-Name Course lautet, verwendet der folgende Code das code
-Objekt des CodeGenerationTools-Typs, um die public partial class Course: IObjectWithChangeTracker, INotifyPropertyChanged
-Ausgabe in der Zielquelldatei zu generieren.
<#=Accessibility.ForType(entity)#>
<#=code.SpaceAfter(code.AbstractOption(entity))#>partial class
<#=code.Escape(entity)#><#=code.StringBefore(" : ",
code.Escape(entity.BaseType))#><#=entity.BaseType == null ? " : " :
", "#>IObjectWithChangeTracker, INotifyPropertyChanged
MetadataTools – Enthalten Hilfsmethoden, die auf die zur Codegenerierung erforderlichen Entity Framework-Metadaten zugreifen.
<#MetadataTools ef = new MetadataTools(this);
if (ef.IsKey(edmProperty))
#>
MetadataLoader – Lädt die Objekte EdmItemCollection, StoreItemCollection und StorageMappingItemCollection aus einer EDMX- oder CSDL-Datei. Im folgenden Beispiel werden das MetadataLoader-Objekt initialisiert und die Metadaten in das metadataWorkspace
-Objekt geladen.
<#MetadataLoader loader = new MetadataLoader(this);
string inputFile = @"SchoolModel.edmx";
MetadataWorkspace metadataWorkspace = null;
bool allMetadataLoaded =loader.TryLoadAllMetadata(inputFile, out metadataWorkspace);
#>
Accessibility – Eine statische Klasse, die das Abrufen und Übersetzen der Codegenerierungsanmerkungen in den Entity Framework-Metadaten in einem Format kapselt, das bei der Codegenerierung verwendet werden kann. Beachten Sie das in der Klassenbeschreibung CodeGenerationTools enthaltene Beispiel.
CodeRegion – Erstellt Quellcodebereiche. Der folgende Code verwendet CodeRegion, um in der Zielquelldatei die Ausgabe #region Primitive Properties
zu generieren.
<#CodeRegion region = new CodeRegion(this, 1);
... region.Begin("Primitive Properties");
#>
Der Bereich wird nicht generiert, wenn kein Quellcode für den Bereich generiert wird.
EntityFrameworkTemplateFileManager – Teilt verschiedene Abschnitte des generierten Codes in separate Dateien auf. Vorlagen, die mehrere Dateien schreiben, verwenden diese Klasse, da die Textvorlagentechnologie das Generieren mehrerer Dateien nicht unterstützt. Wenn eine Textvorlage Teil eines Visual Studio-Projekts ist, werden die generierten Quelldateien als abhängige Elemente der Vorlagendatei hinzugefügt. Im folgenden Beispiel werden mithilfe von EntityFrameworkTemplateFileManager Entitätstypdefinitionen in separaten Dateien ausgegeben.
<#EntityFrameworkTemplateFileManager fileManager = EntityFrameworkTemplateFileManager.Create(this);#>
. . . <#
// Emit Entity Types
foreach (EntityType entity in ItemCollection.GetItems<EntityType>().OrderBy(e => e.Name))
{
fileManager.StartNewFile(entity.Name + ".cs");
BeginNamespace(namespaceName, code);
WriteEntityTypeSerializationInfo(entity, ItemCollection, code, ef);
#>
FunctionImportParameter – Erfasst die Methodenparameter und die Parameter, die an die ExecuteFunction-Methode gesendet werden müssen. Das folgende Beispiel durchläuft die Auflistung der im konzeptionellen Modell definierten Funktionsimporte und erfasst die für die einzelnen Funktionen erforderlichen Parameter.
<#
foreach (EdmFunction edmFunction in container.FunctionImports)
{
IEnumerable<FunctionImportParameter> parameters =
FunctionImportParameter.Create(edmFunction.Parameters, code, ef);
. . . }
#>
Siehe auch
Konzepte
Vorlage "ADO.NET EntityObject Generator"
Vorlage "ADO.NET-Entitäts-Generator mit Selbstnachverfolgung"