Comment : configurer l’héritage à l’aide du Concepteur O/RHow to: Configure inheritance by using the O/R Designer

Le concepteur objet/relationnel (Concepteur O/R) prend en charge le concept d’héritage à table unique tel qu’il est souvent implémenté dans les systèmes relationnels.The Object Relational Designer (O/R Designer) supports the concept of single-table inheritance as it is often implemented in relational systems. L'héritage à table unique fait appel à une seule table de base de données qui contient des champs pour les informations parent et enfant.In single-table inheritance, there is a single database table that contains fields for both parent information and child information. Avec les données relationnelles, une colonne de discriminateur contient la valeur qui détermine à quelle classe tout enregistrement appartient.With relational data, a discriminator column contains the value that determines which class any record belongs to.

Par exemple, considérez un Persons table qui contient tous les employées par une société.For example, consider a Persons table that contains everyone employed by a company. Certaines personnes sont des employés et d'autres des responsables.Some people are employees and some people are managers. Le Persons table contient une colonne nommée EmployeeType qui a la valeur 1 pour les responsables et une valeur de 2 pour les employés ; c’est la colonne de discriminateur.The Persons table contains a column named EmployeeType that has a value of 1 for managers and a value of 2 for employees; this is the discriminator column. Dans ce scénario, vous pouvez créer une sous-classe d'employés et remplir la classe avec uniquement des enregistrements ayant une valeur EmployeeType de 2.In this scenario, you can create a subclass of employees and populate the class with only records that have an EmployeeType value of 2. Vous pouvez également supprimer les colonnes qui ne s'appliquent à aucune de ces classes.You can also remove columns that do not apply from each of the classes.

La création d'un modèle objet qui utilise l'héritage (et correspond aux données relationnelles) peut prêter à confusion.Creating an object model that uses inheritance (and corresponds to relational data) can be somewhat confusing. La procédure suivante décrit les étapes requises pour configurer l’héritage avec les Concepteur O/R.The following procedure outlines the steps required for configuring inheritance with the O/R Designer. Suivre les étapes génériques sans faire référence à une table existante et les colonnes peut-être être difficile, donc une procédure pas à pas qui utilise des données est fourni.Following generic steps without referring to an existing table and columns might be difficult, so a walkthrough that uses data is provided. Pour obtenir des instructions détaillées pour configurer l’héritage à l’aide de la Concepteur O/R, consultez procédure pas à pas : création d’une requête LINQ to SQL classes à l’aide d’héritage à table unique (Concepteur O/R).For detailed step-by-step directions for configuring inheritance by using the O/R Designer, see Walkthrough: Creating LINQ to SQL classes by using single-table inheritance (O/R Designer).

Pour créer des classes de données héritéesTo create inherited data classes

  1. Ouvrez le Concepteur O/R en ajoutant un Classes LINQ to SQL élément à un projet Visual Basic ou c# existant.Open the O/R Designer by adding a LINQ to SQL Classes item to an existing Visual Basic or C# project.

  2. Faites glisser la table que vous souhaitez utiliser en tant que classe de base vers le Concepteur O/R.Drag the table you want to use as the base class onto the O/R Designer.

  3. Faites glisser une deuxième copie de la table sur le Concepteur O/R et renommez-la.Drag a second copy of the table onto the O/R Designer and rename it. C'est la classe dérivée, ou sous-classe.This is the derived class, or subclass.

  4. Cliquez sur héritage dans le concepteur objet/relationnel onglet de la boîte à outils, puis cliquez sur la sous-classe (la table que vous avez renommé) et connectez-la à la classe de base.Click Inheritance in the Object Relational Designer tab of the Toolbox, and then click the subclass (the table you renamed) and connect it to the base class.

    Note

    Cliquez sur le héritage d’élément dans le boîte à outils et relâchez le bouton de la souris, cliquez sur la deuxième copie de la classe que vous avez créé à l’étape 3, puis cliquez sur la première classe que vous avez créé à l’étape 2.Click the Inheritance item in the Toolbox and release the mouse button, click the second copy of the class you created in step 3, and then click the first class you created in step 2. La flèche sur la ligne d’héritage pointe vers la première classe.The arrow on the inheritance line points to the first class.

  5. Dans chaque classe, supprimez toutes les propriétés d'objet que vous ne souhaitez pas voir apparaître et qui ne sont pas utilisées pour des associations.In each class, delete any object properties that you do not want to appear and that are not used for associations. Vous recevez une erreur si vous tentez de supprimer des propriétés de l’objet utilisées pour les associations : la propriété <nom de propriété > ne peut pas être supprimé, car il participe à l’association <nom de l’association >.You receive an error if you attempt to delete object properties used for associations: The property <property name> cannot be deleted because it is participating in the association <association name>.

    Note

    Comme une classe dérivée hérite des propriétés définies dans sa classe de base, les mêmes colonnes ne peuvent pas être définies dans chaque classe.Because a derived class inherits the properties defined in its base class, the same columns cannot be defined in each class. (Les colonnes sont implémentées sous forme de propriétés.) Vous pouvez activer la création de colonnes dans la classe dérivée en définissant le modificateur d’héritage sur la propriété dans la classe de base.(Columns are implemented as properties.) You can enable the creation of columns in the derived class by setting the inheritance modifier on the property in the base class. Pour plus d’informations, consultez fondamentaux de l’héritage (Visual Basic).For more information, see Inheritance basics (Visual Basic).

  6. Sélectionnez la ligne d’héritage dans le Concepteur O/R.Select the inheritance line in the O/R Designer.

  7. Dans le propriétés fenêtre, définissez la propriété de discriminateur au nom de colonne qui distingue les enregistrements dans vos classes.In the Properties window, set the Discriminator Property to the column name that distinguishes the records in your classes.

  8. Définir le valeur de discriminateur de classe dérivée valeur à la propriété dans la base de données qui désigne l’enregistrement comme type hérité.Set the Derived Class Discriminator Value property to the value in the database that designates the record as the inherited type. (Il s’agit de la valeur qui est stockée dans la colonne de discriminateur et est utilisée pour désigner la classe héritée.)(This is the value that is stored in the discriminator column and is used to designate the inherited class.)

  9. Définir le valeur de discriminateur de classe de Base valeur à la propriété qui désigne l’enregistrement comme type de base.Set the Base Class Discriminator Value property to the value that designates the record as a base type. (Il s’agit de la valeur qui est stockée dans la colonne de discriminateur et est utilisée pour désigner la classe de base).(This is the value that is stored in the discriminator column and is used to designate the base class.)

  10. Si vous le souhaitez, vous pouvez également définir le héritage par défaut propriété pour désigner un type dans une hiérarchie d’héritage qui est utilisé lors du chargement de lignes ne correspondant pas à un de défini le code d’héritage.Optionally, you can also set the Inheritance Default property to designate a type in an inheritance hierarchy that is used when loading rows that do not match any defined inheritance code. En d’autres termes, si un enregistrement a une valeur dans la colonne de discriminateur qui ne correspond pas la valeur de la valeur de discriminateur de classe dérivée ou valeur de discriminateur de classe de Base propriétés, l’enregistrement charge dans le type désigné comme le héritage par défaut.In other words, if a record has a value in its discriminator column that does not match the value in either the Derived Class Discriminator Value or Base Class Discriminator Value properties, the record loads into the type designated as the Inheritance Default.

Voir aussiSee also