Vous êtes sur la page 1sur 6

MODULE: ADO.

NET- ENTITY FRAMWORK INHERITANCE


Objectif :
Découvrir le mécanisme d’héritage sous l’API Entity Framework via la méthode Database First.

TPT : (Table Per Type)

TPH : (The Table per Class Hierarchy)

TPC : (The Table per Concrete Class)

1 Mr. OUBENAALLA
TPT : (Table Per Type)
L'héritage Table par type (TPT) est utile lorsque notre base de données a des tables qui sont liées les unes
aux autres en utilisant une relation un à un. Cette relation est maintenue dans la base de données par une
clé primaire partagée.

1. Créer la base de données suivante modélisant les types de professeurs au sein de l’UPF. (Les
relations sont de type UN à UN).
2. Ajouter ADO.NET Entity Data Model :

3. Transformer le Modèle pour prendre en considération les relations d’héritage entre les entités.
Mettre la propriété Abstract de la classe mère à true, supprimer les id des classes filles afin
d'éviter la redondance et valider (Validate). Ensuite tester votre Contexte.

2 Mr. OUBENAALLA
4. Résultats dans la base:

TPH : (The Table per Class Hierarchy)

L'héritage TPH est utile dans les cas où toutes les informations sur les entités liées sont stockées dans une
table unique.

1. Créer la table PROF comme suit :


2. Générer le modèle et transformer le en ajoutant deux nouvelles entités VACCATAIRE et
PERMANENT héritant de l’entité PROF.

3 Mr. OUBENAALLA
3. Faites le mapping des nouvelles entités comme suit (exemple VACCATAIRE : mappage de table):

4. Mettez la classe mère en Abstract (Propriétés>Abstract : True)


5. Mettez les nouvelles propriétés des VACCATAIRE et PERMANENT à non null(Propriétés>nullable :
False)
6. Tester votre contexte
7. Résultats dans la base :

TPC : (The Table per Concrete Class)

4 Mr. OUBENAALLA
L'héritage Table per Concrete Class (TPC) peut être utilisé lorsque la base de données contient des
tables distinctes pour toutes les entités logiques et que ces tables comportent des champs
communs.

 Créer la base de données suivante comportant deux tables VACCATAIRE et PERMANENT

 Générer le modèle et transformer le de manière a ajouter une entité PROF regroupant les champs
communs.

 Modifier le fichier CDSL afin de prendre en considération les mappings :

<EntityContainer Name="myTPCModelStoreContainer">
<EntitySet Name="PERMANENT" EntityType="Self.PERMANENT" Schema="dbo" store:Type="Tables" />
<EntitySet Name="VACCATAIRE" EntityType="Self.VACCATAIRE" Schema="dbo" store:Type="Tables" />
</EntityContainer>

 Modifier aussi le mapping :

5 Mr. OUBENAALLA
<EntitySetMapping Name="PROFSet">
<EntityTypeMapping TypeName="IsTypeOf(TPHModel.PERMANENT)">
<MappingFragment StoreEntitySet="PERMANENT">
<ScalarProperty Name="SalaireMensule" ColumnName="SalaireMensule" />
<ScalarProperty Name="Id" ColumnName="Id" />
<ScalarProperty Name="eMail" ColumnName="eMail" />
<ScalarProperty Name="Nom" ColumnName="Nom" />
<ScalarProperty Name="Prenom" ColumnName="Prenom" />
</MappingFragment>
</EntityTypeMapping>

<EntityTypeMapping TypeName="IsTypeOf(TPHModel.VACATAIRE)">
<MappingFragment StoreEntitySet="VACATAIRE">
<ScalarProperty Name="nbreHeure" ColumnName="nbreHeure" />
<ScalarProperty Name="tauxHoraire" ColumnName="tauxHoraire" />
<ScalarProperty Name="Id" ColumnName="Id" />
<ScalarProperty Name="eMail" ColumnName="eMail" />
<ScalarProperty Name="Nom" ColumnName="Nom" />
<ScalarProperty Name="Prenom" ColumnName="Prenom" />
</MappingFragment>
</EntityTypeMapping>
</EntitySetMapping>

 Tester le contexte

Exercice

 Ajouter les repository et tester votre application


 Proposer une GUI pour cette étude

6 Mr. OUBENAALLA

Vous aimerez peut-être aussi