Procédure : prégénérer des vues pour améliorer les performances des requêtes
Avant qu'Entity Framework puisse exécuter une requête sur un modèle conceptuel ou enregistrer des modifications apportées à la source de données, il doit générer un ensemble d'affichages des requêtes locaux pour accéder à la base de données. Les vues font partie des métadonnées mises en cache par domaine d'application. Si vous créez plusieurs instances de contexte d'objet dans le même domaine d'application, elles réutiliseront les vues des métadonnées mises en cache au lieu de les régénérer. É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é. Pour plus d'informations, consultez Considérations sur les performances (Entity Framework).
Outre que pour la génération et la validation du modèle Entity Framework model et des fichiers de mappage, 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.
Vous pouvez aussi utiliser un modèle Text Template Transformation Toolk pour générer des vues précompilées. Pour plus d'informations, consultez Comment utiliser un modèle T4 pour la génération des vues.
Remarque : |
---|
Les procédures de cette rubrique utilisent des événements pré- et post-build dans Visual Studio, qui ne sont pas pris en charge dans les sites Web ASP.NET. Pour prégénérer des vues utilisées par un site Web ASP.NET, vous devez créer le fichier .edmx dans une bibliothèque de classes distincte, utiliser les procédures décrites dans la rubrique How to: Use a Model Defined in a Class Library 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 et des fichiers de mappage.
Les procédures de cette rubrique utilisent le modèle School. Vous pouvez générer ce modèle en suivant les indications de la rubrique Démarrage rapide (Entity Framework). 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.
Pour générer des fichiers de modèle et de mappage pour le modèle School dans le répertoire de sortie
Dans l'Explorateur de solutions, double-cliquez sur le fichier School.edmx.
Cela affiche le modèle School dans le Concepteur d'entités.
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.
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
Dans l'Explorateur de solutions, sélectionnez le projet pour lequel vous voulez spécifier l'événement de build.
Dans le menu Projet, cliquez sur Propriétés du projet.
Sur la page Propriétés, cliquez sur l'onglet Compiler.
Cliquez sur le bouton Événements de build.
Dans la boîte de dialogue Événements de build, ajoutez l'événement pré-build suivant, sans sauts de ligne :
"%windir%\Microsoft.NET\Framework\v4.0.30319\EdmGen.exe" /nologo /language:VB /mode:ViewGeneration "/inssdl:$(TargetDir)School.ssdl" "/incsdl:$(TargetDir)School.csdl" "/inmsl:$(TargetDir)School.msl" "/outviews:$(ProjectDir)School.Views.vb"
Cliquez sur OK.
Fermez la page Propriétés du projet.
Générez la solution.
Cela génère le fichier de vue School.Views.vb.
Dans l'Explorateur de solutions, cliquez avec le bouton droit sur le nom du projet, puis sélectionnez Ajouter un élément existant.
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.
Cliquez sur Ajouter.
Générez la solution.
Pour ajouter la génération de vues à un projet C#
Dans l'Explorateur de solutions, sélectionnez le projet pour lequel vous voulez spécifier l'événement de build.
Dans le menu Projet, cliquez sur Propriétés.
Sélectionnez l'onglet Événements de build.
Dans la fenêtre Ligne de commande de l'événement pré-build, ajoutez l'événement pré-build suivant, sans sauts de ligne :
"%windir%\Microsoft.NET\Framework\v4.0.30319\EdmGen.exe" /nologo /language:CSharp /mode:ViewGeneration "/inssdl:$(TargetDir)School.ssdl" "/incsdl:$(TargetDir)School.csdl" "/inmsl:$(TargetDir)School.msl" "/outviews:$(ProjectDir)School.Views.cs"
Générez la solution.
Cela génère le fichier de vue School.Views.cs.
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.
Accédez au dossier racine du projet, puis sélectionnez le fichier School.Views.cs.
Cliquez sur Ajouter.
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
Dans le menu Projet, cliquez sur Ajouter un élément existant.
Recherchez le projet dans le répertoire de sortie, sélectionnez School.csdl, puis cliquez sur OK.
Dans l'Explorateur de solutions, sélectionnez le fichier ajouté.
Dans Propriétés, affectez la valeur Ressource incorporée à Action de génération.
Répétez les étapes 1 à 3 pour le fichier School.ssdl et le fichier School.msl.
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, consultez Chaînes de connexion (Entity Framework).
Voir aussi
Référence
Autres ressources
Entity Data Model Tools
Isolation des performances à l'aide des vues précompilées/prégénérées dans Entity Framework 4