Procédure : prégénérer des vues pour améliorer les performances des requêtes (Entity Framework)

Avant qu'une requête puisse être exécutée sur un modèle EDM (Modèle de données d'entité), Entity Framework génère un ensemble de vues qui sont utilisées pour accéder à la base de données. Entity Framework génère des vues lors de la première exécution d'une requête, puis conserve ces vues pendant la durée de vie de l'instance du ObjectContext. Étant donné que la génération de vues constitue une partie significative du coût total de l'exécution d'une seule requête, Entity Framework vous permet de prégénérer ces vues et de les inclure dans le projet compilé. Outre la génération et la validation des fichiers de modèle et de mappage EDM, l'outil EDM Generator (EdmGen.exe) est également utilisé pour prégénérer ces vues. Cette rubrique montre comment utiliser EdmGen.exe pour prégénérer des vues pour le modèle School et ajouter le fichier de vue au projet. Le modèle School est créé dans le Démarrage rapide Entity Framework. La procédure finale vous indique comment rajouter les fichiers de modèle et de mappage en tant que ressources incorporées à une application Web ASP.NET.

NoteRemarque

Les procédures de cette rubrique utilisent des événements avant génération et après génération dans Visual Studio, lesquels ne sont pas pris en charge dans les sites Web ASP.NET. Pour prégénérer des vues pour un modèle EDM utilisé par un site Web ASP.NET, vous devez créer le modèle EDM dans une bibliothèque de classes distincte, utiliser la procédure ci-dessous pour le projet de bibliothèque de classes, puis référencer ce projet dans votre projet de site Web ASP.NET. Vous pouvez également utiliser un projet d'application Web ASP.NET plutôt qu'un site Web ASP.NET. Cela vous permet d'inclure des vues prégénérées dans le même projet que l'application Web ASP.NET en suivant les procédures décrites dans cette rubrique.

Les vues prégénérées sont validées au moment de l'exécution pour garantir qu'elles sont cohérentes avec la version actuelle du modèle EDM. Cette procédure garantit que les vues correspondent au modèle EDM. Vous pouvez ignorer la première procédure si le processus de génération génère déjà des fichiers de modèle et de mappage dans le répertoire de sortie. Les procédures de cette rubrique utilisent le modèle School. Vous pouvez générer ce modèle en effectuant le Démarrage rapide (Entity Framework).

NoteRemarque

Visual Studio 2008 Service Pack 1 (SP1) est requis pour effectuer les procédures de cette rubrique.

Pour générer des fichiers de modèle et de mappage pour le modèle School dans le répertoire de sortie

  1. Dans l'Explorateur de solutions, double-cliquez sur le fichier School.edmx.

    Cela affiche le modèle School dans le Concepteur d'entités.

  2. Dans l'Explorateur de modèles, sélectionnez le modèle SchoolModel et remplacez Traitement d'artefact des métadonnées par Copier dans le répertoire de sortie.

    Cela garantit que les fichiers de modèle et de mappage sont générés dans le répertoire de sortie.

  3. Générez la solution.

    Cela génère les fichiers de modèle et de mappage dans le répertoire de sortie.

Pour ajouter la génération de vues à un projet Visual Basic

  1. Dans l'Explorateur de solutions, sélectionnez le projet pour lequel vous voulez spécifier l'événement de génération.

  2. Dans le menu Projet, cliquez sur Propriétésdu projet.

  3. Sur la page Propriétés, cliquez sur l'onglet Compiler.

  4. Cliquez sur le bouton Événements de génération.

  5. Dans la boîte de dialogue Événements de génération, ajoutez l'événement avant génération suivant, sans sauts de ligne :

    "%windir%\Microsoft.NET\Framework\v3.5\EdmGen.exe" /nologo /language:VB 
    /mode:ViewGeneration "/inssdl:$(TargetDir)School.ssdl" 
    "/incsdl:$(TargetDir)School.csdl" "/inmsl:$(TargetDir)School.msl" 
    "/outviews:$(ProjectDir)School.Views.vb"
    
  6. Cliquez sur OK.

  7. Fermez la page Propriétés du projet.

  8. Générez la solution.

    Cela génère le fichier de vue School.Views.cs.

  9. Dans l'Explorateur de solutions, cliquez avec le bouton droit sur le nom du projet, puis sélectionnez Ajouter un élément existant.

  10. Dans la boîte de dialogue Ajouter un élément existant, accédez au dossier racine du projet, puis sélectionnez le fichier School.Views.vb.

  11. Cliquez sur Ajouter.

  12. Générez la solution.

Pour ajouter la génération de vues à un projet C#

  1. Dans l'Explorateur de solutions, sélectionnez le projet pour lequel vous voulez spécifier l'événement de génération.

  2. Dans le menu Projet, cliquez sur Propriétés.

  3. Sélectionnez l'onglet Événements de génération.

  4. Dans la fenêtre Ligne de commande de l'événement avant génération, ajoutez l'événement avant génération suivant, sans sauts de ligne :

    "%windir%\Microsoft.NET\Framework\v3.5\EdmGen.exe" /nologo /language:CSharp 
    /mode:ViewGeneration "/inssdl:$(TargetDir)School.ssdl" 
    "/incsdl:$(TargetDir)School.csdl" "/inmsl:$(TargetDir)School.msl" 
    "/outviews:$(ProjectDir)School.Views.cs"
    
  5. Générez la solution.

    Cela génère le fichier de vue School.Views.cs.

  6. Dans l'Explorateur de solutions, cliquez avec le bouton droit sur le nom du projet, puis sélectionnez Ajouter un élément existant.

    La boîte de dialogue Ajouter un élément existant s'affiche.

  7. Accédez au dossier racine du projet, puis sélectionnez le fichier School.Views.cs.

  8. Cliquez sur Ajouter.

  9. Générez la solution.

Pour rajouter des fichiers de mappage et de modèle en tant que ressources incorporées pour des projets ASP.NET

  1. Dans le menu Projet, cliquez sur Ajouter un élément existant.

  2. Recherchez le projet dans le répertoire de sortie, sélectionnez School.csdl, puis cliquez sur OK.

  3. Dans l'Explorateur de solutions, sélectionnez le fichier ajouté.

  4. Dans Propriétés, affectez la valeur Ressource incorporée à Action de génération.

  5. Répétez les étapes 1 à 3 pour le fichier School.ssdl et le fichier School.msl.

  6. Dans l'Explorateur de solutions, double-cliquez sur le fichier App.config, puis modifiez le paramètre Metadata dans l'attribut connectionString en appliquant l'un des formats suivants :

    • Metadata=``res://<assemblyFullName>/<resourceName>;

    • Metadata=``res://*/<resourceName>;

    • Metadata=res://*;

    L'élément resourceName peut inclure l'espace de noms du projet. Pour plus d'informations, voir Chaînes de connexion (Entity Framework).

Voir aussi

Référence

EDM Generator (EdmGen.exe)

Autres ressources

Outils Entity Data Model