Présentation du code généré (Entity Data Model Designer)

ADO.NET Entity Framework fournit des outils permettant de générer automatiquement une couche objet basée sur le contenu CSDL (Conceptual Schema Definition Language) d'un fichier .edmx. Par défaut, EntityModelCodeGenerator est l'outil personnalisé utilisé par ADO.NET Entity Data Model Designer (Entity Designer) pour générer le code de couche objet. Pour plus d'informations sur les outils personnalisés, consultez Implementing Single-File Generators (en anglais). Vous pouvez également utiliser l'outil en ligne de commande EdmGen.exe. Pour plus d'informations, consultez How to: Use EdmGen.exe to Generate Object Model Files. L'EntityModelCodeGenerator et l'outil en ligne de commande EdmGen.exe utilisent la classe EntityClassGenerator pour générer le code source.

Le Concepteur d'entités peut également utiliser des modèles de texte pour générer le code de couche objet personnalisé. Pour plus d'informations, consultez Procédure : personnaliser la génération de code de couche objet (Entity Data Model Designer).

Génération du code de couche objet

L'outil personnalisé par défaut utilisé pour générer le code de couche objet peut être déclenché de plusieurs façons :

  • Utilisation de l'Assistant EDM ADO.NET. Pour plus d'informations, consultez Assistant EDM.

  • Utilisation de l'Assistant Mise à jour du modèle. Pour plus d'informations, consultez Assistant Mise à jour du modèle (Entity Data Model Tools).

  • Exécution de l'outil spécifié dans la propriété Custom Tool du fichier .edmx. Pour cela, cliquez avec le bouton droit sur un fichier .edmx dans l'Explorateur de solutions, puis sélectionnez Exécuter un outil personnalisé. Pour plus d'informations sur les propriétés du fichier .edmx, consultez Présentation d'un fichier .edmx (Entity Framework).

  • Enregistrement d'un fichier .edmx.

  • Accès par tabulation à un autre élément à partir d'un fichier .edmx qui a été modifié. Notez que cela inclut le fait d'accéder par tabulation à un autre élément à partir d'un fichier .edmx modifié qui est ouvert dans le Concepteur d'entités.

  • Génération d'un projet dont un fichier .edmx a été modifié.

    Cc982041.note(fr-fr,VS.100).gifRemarque :
    Les options ci-dessus génèrent ou remplacent un fichier de code source Visual Basic ou C# avec le nom suivant : <nom_modèle>.Designer.vb ou <nom_modèle>.Designer.cs.Ce fichier est ajouté au nœud .edmx dans l'Explorateur de solutions.

  • Utilisation de l'outil en ligne de commande EdmGen.exe. L'outil EdmGen.exe génère un fichier de code source Visual Basic ou C# avec un nom et un emplacement tels que spécifiés dans la ligne de commande.

Cc982041.note(fr-fr,VS.100).gifRemarque :
Lorsque le code de couche objet est généré par l'outil personnalisé par défaut ou par l'outil EdmGen.exe, le code de couche objet existant est remplacé.Pour plus d'informations sur la façon d'éviter le remplacement des personnalisations apportées à la couche objet, consultez How to: Customize Generated Data Objects.

Cc982041.note(fr-fr,VS.100).gifRemarque :
La méthode générée selon une importation de fonction dans le modèle conceptuel exécute la procédure stockée correspondante avec la méthode ExecuteFunction.Si vous utilisez la surcharge qui ne prend pas le paramètre d'option de fusion, l'option AppendOnly sera utilisée.

Cc982041.note(fr-fr,VS.100).gifRemarque :
À partir de Visual Studio 2010, les générateurs de code affectent à la propriété LazyLoadingEnabled sur l'objet ObjectContext la valeur de l'attribut d'annotation annotation:LazyLoadingEnabled défini dans le modèle conceptuel.Par défaut, la valeur d'annotation:LazyLoadingEnabled est true.

Détermination de l'espace de noms du code généré

Par défaut, l'espace de noms du code généré est l'espace de noms spécifié dans la Page Application du projet. Si vous spécifiez l'espace de noms dans la propriété Custom Tool Namespace du fichier .edmx, l'espace de noms spécifié est utilisé.

Les points supplémentaires suivants sont à prendre en considération selon le type de projet :

  • Pour les projets Visual Basic, si aucune valeur n'a été définie pour la propriété Custom Tool Namespace et que le projet a un espace de noms vide, l'espace de noms du code généré est l'espace de noms du modèle conceptuel, tel que spécifié dans le fichier .edmx. Pour plus d'informations, consultez Determination de l'espace de noms par défaut. Si vous spécifiez l'espace de noms de l'outil personnalisé, le compilateur Visual Studio ajoute l'espace de noms racine du projet au nom que vous avez spécifié. Bien que les types soient définis dans l'espace de noms spécifié, lorsque vous déclarez les types, vous devez importer defaultnamespace.specifiednamespace. Par exemple, si l'espace de noms racine de votre projet est ProjectDefaultNamespace et si dans la propriété Custom Tool Namespace vous avez spécifié TestNamespace, lorsque vous déclarez les types définis dans l'espace de noms TestNamespace, vous devez utiliser : Import ProjectDefaultNamespace.TestNamespace.

  • Pour les projets C#, si aucun espace de noms n'a été spécifié pour la propriété Custom Tool Namespace, l'espace de noms du code généré est l'espace de noms par défaut du projet (comme spécifié dans la Page Application du projet) suivi du chemin d'accès au dossier où se trouve le fichier .edmx. Par exemple, si le chemin d'accès du fichier .edmx relatif au répertoire racine du projet est Folder1/Folder2/Model.edmx, l'espace de noms du code généré est ProjectDefaultNamespace.Folder1.Folder2.

  • Pour les projets de site Web ASP.NET, si le fichier .edmx est dans la racine du dossier App_Code, l'espace de noms du code généré est celui du modèle conceptuel, tel que défini dans le contenu CSDL du fichier .edmx. Pour plus d'informations, consultez Schema Element (CSDL). Si le fichier .edmx est dans un sous-dossier du dossier App_Code, l'espace de noms du code généré est le chemin d'accès au dossier relatif au dossier App_Code. Par exemple, si le fichier .edmx est dans App_Code/Folder1/Folder2, l'espace de noms du code généré est Folder1.Folder2.

Utilisation de plusieurs fichiers .edmx dans un projet

Lorsqu'un projet contient plusieurs fichiers .edmx basés sur des bases de données avec des noms de table en commun, le code généré peut contenir des noms de classes en conflit. Les circonstances dans lesquelles ces conflits surviennent et la façon dont les conflits sont résolus dépendent du type de projet, comme suit :

  • Pour les projets C#, les noms de classes en conflit peuvent apparaître dans le code généré si plusieurs fichiers .edmx basés sur des bases de données avec des noms de table en commun se trouvent dans le même dossier de projet. Pour résoudre un conflit, spécifiez une valeur unique pour la propriété Custom Tool Namespace de chaque fichier .edmx ou placez chaque fichier .edmx dans un sous-dossier de projet séparé.

  • Pour les projets Visual Basic, les noms de classes en conflit peuvent apparaître dans le code généré si plusieurs fichiers .edmx basés sur des bases de données avec des noms de table en commun se trouvent à un endroit quelconque du projet. Pour résoudre un conflit, spécifiez une valeur unique pour la propriété Custom Tool Namespace de chaque fichier .edmx.

  • Pour les projets de site Web ASP.NET, les noms de classes en conflit peuvent apparaître dans le code généré si plusieurs fichiers .edmx basés sur des bases de données avec des noms de table en commun se trouvent dans le dossier App_Code ou dans le même sous-dossier du répertoire App_Code. Pour résoudre un conflit, placez chaque fichier .edmx dans un sous-dossier distinct du répertoire App_Code.

Notez que la résolution dans chaque cas modifie l'espace de noms du code généré pour chaque fichier .edmx ; le code d'application existant qui consomme les classes générées doit parfois être mis à jour.

Extension de classes partielles

Lorsque des classes de données sont générées par Entity Data Model Tools, elles sont implémentées en classes partielles. Vous pouvez ajouter des fonctionnalités aux objets en étendant les classes de données partielles générées. Lorsque vous disposez de classes partielles, vous pouvez étendre ces classes à l'aide de méthodes et de propriétés personnalisées dans un fichier source séparé sans avoir à vous inquiéter de perdre cette personnalisation lorsque les fichiers générés sont actualisés. Pour plus d'informations, consultez How to: Customize Generated Data Objects.

Dans cette section

Voir aussi

Concepts

Présentation d'un fichier .edmx (Entity Framework)