Académique Documents
Professionnel Documents
Culture Documents
4 Inheritance
4 Inheritance
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:
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.
3 Mr. OUBENAALLA
3. Faites le mapping des nouvelles entités comme suit (exemple VACCATAIRE : mappage de table):
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.
Générer le modèle et transformer le de manière a ajouter une entité PROF regroupant les champs
communs.
<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>
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
6 Mr. OUBENAALLA