Partager via


Fichier utilitaire .ttinclude Entity Framework

Cette rubrique fournit une vue d'ensemble du fichier .ttinclude qui contient des classes utilitaires qui assistent les modèles ADO.NET dans le processus de génération du code. Ce fichier est utilisé par les modèles Modèle ADO.NET EntityObject Generator et Modèle Générateur d'entité de suivi automatique ADO.NET. Vous ne devez pas modifier le fichier .ttinclude. Toutefois, vous pouvez utiliser dans vos propres modèles les fonctions d'assistance définies dans ce fichier.

Les versions Visual Basic et C# du fichier .ttinclude sont installées avec Microsoft Visual Studio 2010, dans le répertoire <chemin d'installation de Visual Studio> \Common7\IDE\Extensions\Microsoft\Entity Framework Tools\Templates\Includes.

Utilisez la directive Include pour inclure le fichier dans d'autres modèles de texte. Lorsque vous ajoutez la directive Include à un modèle de texte, le système fusionne les API publiques du fichier inclus avec le code dans le modèle de texte. La directive Include accepte un nom de fichier avec le chemin d'accès complet, ou uniquement le nom du fichier inclus. Si vous spécifiez seulement le nom, le moteur de transformation du modèle de texte recherche le fichier dans les emplacements bien connus. Pour plus d'informations, consultez How to: Include Files in Text Templates (en anglais). Dans l'exemple suivant, seul le nom du fichier .ttinclude est spécifié :

<#@ include file="EF.Utility.CS.ttinclude"#>

Classes définies dans .ttinclude

Dans les modèles de texte, les fonctions d'assistance sont mises entre des blocs de fonctionnalité de classe. Les blocs de fonctionnalité de classe sont entourés de balises <#+ et #>. Le code dans ce fichier .ttinclude utilise des types .NET Framework. Par conséquent, les assemblys appropriés et les espaces de noms .NET Framework sont inclus au début du fichier. Pour plus d'informations sur l'utilisation des modèles de texte, consultez Génération d'artefacts.

Vous trouverez ci-dessous la liste des quelques classes publiques définies dans le fichier EF.Utility.CS.ttinclude, ainsi que de brefs exemples d'utilisation de ces classes par les modèles ADO.NET EntityObject Generator et Générateur d'entité de suivi automatique ADO.NET.

CodeGenerationTools  : chargée de faciliter la création du code source qui est correctement mis en forme et fonctionnel.

Étant donné que le nom d'entiy est Course, le code suivant utilise l'objet code du type CodeGenerationTools pour générer la sortie public partial class Course: IObjectWithChangeTracker, INotifyPropertyChanged dans le fichier source cible.

<#=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 : contient des méthodes d'assistance qui accèdent aux métadonnées Entity Framework nécessaires pour la génération du code.

<#MetadataTools ef = new MetadataTools(this);
if (ef.IsKey(edmProperty))
    
#>

MetadataLoader : responsable du chargement des objets EdmItemCollection, StoreItemCollection et StorageMappingItemCollection à partir d'un fichier .edmx ou .csdl. L'exemple suivant initialise l'objet MetadataLoader et charge les métadonnées dans l'objet metadataWorkspace.

<#MetadataLoader loader = new MetadataLoader(this);
string inputFile = @"SchoolModel.edmx";
MetadataWorkspace metadataWorkspace = null;
bool allMetadataLoaded =loader.TryLoadAllMetadata(inputFile, out metadataWorkspace);
#>

Accessibility : classe statique qui encapsule la récupération et la traduction des annotations de génération du code dans les métadonnées Entity Framework, dans un format utile dans la génération du code. Consultez l'exemple inclus dans la description de classe CodeGenerationTools.

CodeRegion : chargée de créer des régions de code source. Le code suivant utilise CodeRegion pour générer la sortie #region Primitive Properties dans le fichier source cible.

<#CodeRegion region = new CodeRegion(this, 1);
...  region.Begin("Primitive Properties");
#>  

La région n'est pas générée si aucun code source n'est généré pour la région.

EntityFrameworkTemplateFileManager : chargée de fractionner différentes sections du code généré dans des fichiers séparés. Les modèles qui écrivent dans plusieurs fichiers utilisent cette classe parce que la technologie de modèle de texte ne prend pas en charge la génération de plusieurs fichiers. Si un modèle de texte fait partie d'un projet Visual Studio, les fichiers sources générés sont ajoutés en tant que fichiers dépendants du fichier modèle. L'exemple suivant utilise EntityFrameworkTemplateFileManager pour générer des définitions du type d'entité dans des fichiers séparés.

<#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 : chargée de collecter les paramètres de méthode et les paramètres qui doivent être envoyés à la méthode ExecuteFunction. L'exemple suivant effectue une boucle sur la collection d'importations de fonctions définies dans le modèle conceptuel et collecte les paramètres nécessaires à chaque fonction.

<#
foreach (EdmFunction edmFunction in container.FunctionImports)
{
    IEnumerable<FunctionImportParameter> parameters = 
        FunctionImportParameter.Create(edmFunction.Parameters, code, ef);
.  .  .  }
#>  

Voir aussi

Concepts

Modèle ADO.NET EntityObject Generator
Modèle Générateur d'entité de suivi automatique ADO.NET