Cet article a fait l'objet d'une traduction manuelle. Déplacez votre pointeur sur les phrases de l'article pour voir la version originale de ce texte.
Traduction
Source
Ce sujet n'a pas encore été évalué - Évaluez ce sujet

Procédure pas à pas : mappage de l'héritage table par hiérarchie dans Dynamic Data

.NET Framework 4

Cette procédure pas à pas indique comment implémenter l'héritage TPH (table par hiérarchie) en modifiant le modèle conceptuel dans un modèle EDM (Entity Data Model). Le modèle TPH (table par hiérarchie) est consommé par un projet Dynamic Data Entity Framework.

L'héritage TPH (table par hiérarchie) utilise une table de base de données pour gérer les données de tous les types d'entités d'une hiérarchie d'héritage. Il s'appelle également l'héritage de table individuelle. Pour plus d'informations sur l'implémentation de l'héritage avec un modèle EDM, consultez Inheritance. Pour plus d'informations sur l'utilisation de l'héritage avec Dynamic Data, consultez Infrastructure Dynamic Data ASP.NET.

Dans cette procédure pas à pas, vous allez implémenter l'héritage TPH (table par hiérarchie) en modifiant le modèle EDM généré dans l'exemple de base de données School. Dans l'exemple de projet EDM de base de données School, le type d'entité Person a deux propriétés, HireDate et EnrollmentDate. Ces propriétés peuvent appartenir à de nouveaux types d'entité (Instructor et Student) qui héritent de Person.

Dans la procédure pas à pas, vous allez implémenter l'héritage TPH (table par hiérarchie) à l'aide des étapes suivantes :

  1. Créez deux nouveaux types d'entités qui dérivent de Person.

  2. Déplacez les propriétés spécifiques à chaque sous-type de l'entité Person vers l'entité de sous-type.

  3. Définissez les contraintes sur les propriétés spécifiques de sous-type.

  4. Transformez le type d'entité Person en type abstrait.

  5. Mappez chaque sous-type d'entité à la table Person avec une condition sur un champ spécifique de sous-type.

Pour exécuter cette procédure pas à pas, les éléments suivants sont nécessaires :

  • Microsoft Visual Studio 2010 ou une version ultérieure.

  • L'exemple de base de données School. Vous pouvez télécharger une version de cette base de données pour Microsoft SQL Server 2008 à partir du site CodePlex, ou la créer à l'aide des instructions Transact-SQL. Pour plus d'informations, consultez Creating the School Sample Database.

  • Site Web d'entités Dynamic Data qui utilise l'exemple de base de données School. Cette procédure pas à pas suppose que School.edmx est utilisé pour le nom du fichier ADO.NET Entity Data Mode (EDM).

Cette procédure pas à pas suppose également que vous êtes familiarisé avec Dynamic Data ASP.NET. Pour plus d'informations, consultez Vue d'ensemble de Dynamic Data ASP.NET.

Un site Web Visual Studio contenant du code source est disponible pour accompagner cette rubrique : Dynamic Data Entity Framework (éventuellement en anglais). Une vidéo vous explique comment ajouter de nouvelles entités : Mappage de l'héritage table par hiérarchie.

Pour commencer, vous allez modifier la partie conceptuelle du modèle EDM SchoolModel pour implémenter l'héritage TPH. Vous allez ajouter deux entités, Student et Instructor. Ces entités héritent de l'entité Person. Les propriétés qui sont uniques à l'entité Student seront déplacées de l'entité Person vers l'entité Student. Les propriétés qui sont propres à l'entité Instructor seront déplacées de l'entité Person vers l'entité Instructor. L'entité Person contiendra des propriétés qui sont partagées par les deux entités héritées.

Pour ajouter de nouvelles entités

  1. Ouvrez un projet Web Dynamic Data qui utilise l'exemple de base de données School et contient le fichier School.edmx comme fichier ADO.NET Entity Data Mode (EDM).

    Pour plus d'informations, consultez la section Composants requis de cette rubrique.

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

    Le fichier School.edmx s'ouvre dans ADO.NET Entity Data Model Designer (Concepteur d'entités).

  3. Cliquez avec le bouton droit sur une zone vide de l'aire de conception du Concepteur d'entités, sélectionnez Ajouter, puis cliquez sur Entité.

    La boîte de dialogue Ajouter une entité s'affiche. L'illustration suivante montre l'interface utilisateur utilisée pour ajouter une entité.

    Cliquer avec le bouton droit sur un espace vide de l'aire de conception

    L'illustration suivante montre la boîte de dialogue Ajouter une entité.

    Ajouter une entité
  4. Pour Nom d'entité , entrez Instructor.

  5. Dans la liste Type de base, sélectionnez Personne.

  6. Cliquez sur OK.

    L'illustration suivante montre le nouveau type d'entité créé et affiché sur l'aire de conception.

    Entité Instructor
  7. Répétez les étapes précédentes, mais pour Nom d'entité, spécifiez Student.

    Deux nouveaux types d'entité, Instructor et Student, s'affichent sur l'aire de conception. Des flèches pointent des nouveaux types d'entité vers le type d'entité Person. Cela indique que Person est le type de base pour les nouveaux types d'entité.

  8. Dans le concepteur d'entité, sous Propriétés scalaires, cliquez avec le bouton droit sur la propriété HireDate du type d'entité Person, puis sélectionnez Couper.

  9. Dans le concepteur d'entité, cliquez avec le bouton droit sur Propriétés scalaires du type d'entité Instructor, puis cliquez sur Coller.

  10. Cliquez avec le bouton droit sur la propriété HireDate, puis sélectionnez Propriétés.

  11. Dans la fenêtre Propriétés, affectez à la propriété Nullable la valeur false.

  12. Répétez les quatre étapes précédentes, mais coupez la propriété EnrollmentDate du type d'entité Person, puis collez-la dans le type d'entité Student.

  13. Sélectionnez le type d'entité Person.

  14. Dans la fenêtre Propriétés, affectez à la propriété Abstract du type d'entité Person la valeur true.

    Un message s'affiche pour indiquer que la définition d'un type d'entité comme type abstrait supprimera tous les mappages de fonction existants pour ce type.

  15. Cliquez sur OK.

    Remarque Remarque

    Il n'est pas nécessaire d'utiliser des types abstraits pour modéliser des scénarios TPH. Les types abstraits sont utilisés dans cet exemple pour illustrer leur utilisation dans un modèle EDM.

Vous allez désormais mapper les entités Student et Instructor à l'entité Person. Les instructors (formateurs) sont embauchés mais ils ne s'inscrivent pas. Les students (étudiants) ne sont pas embauchés mais ils s'inscrivent. L'Entity Framework utilisera la date d'embauche et la date d'inscription pour distinguer une entité Instructor et une entité Student.

Pour mapper les entités Instructor et Student

  1. Si la fenêtre Détails de Mapping n'est pas visible, cliquez avec le bouton droit sur l'aire de conception, puis cliquez sur Détails de Mapping.

  2. Sélectionnez le type d'entité Instructor, puis, dans la fenêtre Détails de mappage, cliquez sur <Ajouter une table ou une vue>.

    L'illustration suivante montre la boîte de dialogue Détails de mappage - Instructeur.

    Sélectionnez le type d'entité Instructor, puis cliquez sur <Ajouter>.

    Le champ <Ajouter une table ou une vue> s'affiche alors sous la forme d'une liste des tables auxquelles l'entité sélectionnée peut être mappée.

  3. Dans la liste, sélectionnez Personne.

    La fenêtre Détails de Mapping est mise à jour avec les mappages de colonnes par défaut et une option permettant l'ajout d'une condition.

  4. Cliquez sur <Ajouter une condition>.

    Le champ <Ajouter une condition> s'affiche alors sous la forme d'une liste des colonnes pour lesquelles des conditions peuvent être définies.

  5. Dans la liste, sélectionnez HireDate.

  6. Dans la colonne Opérateur de la fenêtre Détails de Mapping, sélectionnez Is dans la liste.

  7. Dans la colonne Propriété/Valeur, sélectionnez Non Null.

    Remarque Remarque

    Les propriétés d'entité peuvent être utilisées uniquement avec une comparaison Est Null ou Est pas Null. Elles ne peuvent pas être utilisées dans une comparaison d'égalité.

    L'illustration suivante montre le détail de mappage complété.

    Détail de mappage terminé
  8. Répétez les étapes précédentes pour le type d'entité Student, mais sélectionnez la propriété EnrollmenDate et sélectionnez la condition EnrollmentDate n'est pas null.

    L'héritage TPH (table par hiérarchie) est maintenant implémenté.

    L'illustration suivante montre l'héritage TPH (table par hiérarchie) pour les entités que vous avez créées.

    Afficher la hiérarchie des tables
  9. Enregistrez et fermez le fichier School.edmx file.

Vous pouvez maintenant tester le site Web Dynamic Data que vous venez de créer.

Pour tester les tables héritées

  1. Dans l'Explorateur de solutions, cliquez avec le bouton droit sur la page Default.aspx, puis cliquez sur Afficher dans le navigateur.

    La page affiche une liste qui contient les tables student et instructor que vous avez ajoutées au modèle de données. La liste n'affiche pas la table de personnes parce que celle-ci est marquée abstraite.

  2. Cliquez sur la table student ou instructor.

    Une page s'affiche et contient les données de la table student ou instructor. La table student n'a aucune colonne Embauché et chaque ligne contient une date d'inscription. La table de formateurs n'a aucune colonne Inscrit et chaque ligne contient une date d'embauche.

  3. Fermez le navigateur.

Dans cette procédure pas à pas, vous avez implémenté correctement l'héritage TPH dans un modèle EDM et affiché le résultat sur un site Web d'entités Dynamic Data. Pour plus d'informations sur la définition d'un modèle EDM avec l'héritage TPH (table par hiérarchie), consultez How to: Define a Model with Table-per-Hierarchy Inheritance. Pour plus d'informations sur l'implémentation de l'héritage avec un modèle EDM, consultez Inheritance (EDM).

Cela vous a-t-il été utile ?
(1500 caractères restants)
Contenu de la communauté Ajouter
Annotations FAQ