Objets de type complexe (Entity Framework)

Les types complexes sont les propriétés non scalaires des types d'entités qui permettent d'organiser les propriétés scalaires au sein des entités. À l'instar des entités, les types complexes regroupent des propriétés scalaires ou d'autres propriétés de type complexe. Un type complexe ne peut pas exister sans une entité ou un type complexe parent. Dans la mesure où les types complexes n'ont pas de clés, les objets de type complexe, mis à part l'objet parent, ne peuvent pas être gérés par Object Services. Pour plus d'informations, voir Type complexe (EDM).

Lorsque les outils Entity Framework génèrent les objets qui représentent des types d'entités, ces objets héritent de EntityObject. De la même manière, les objets générés pour les types complexes héritent de ComplexObject. Ces deux classes héritent de la classe de base StructuralObject. Les propriétés scalaires des objets de type complexe sont accessibles comme les autres propriétés scalaires. Pour plus d'informations, voir Procédure : créer et exécuter des requêtes d'objet avec des types complexes (Entity Framework).

Lorsque vous travaillez avec des objets qui représentent des types complexes, prenez en considération les points suivants :

  • Les propriétés de type complexe ne peuvent pas être null. Un InvalidOperationException se produit lorsque la méthode SaveChanges est appelée et qu'un objet complexe null est rencontré. À l'instar des propriétés scalaires des entités, les propriétés scalaires des objets complexes peuvent être null.

  • Les types complexes ne peuvent pas hériter d'autres types complexes.

  • Lorsqu'une propriété quelle qu'elle soit est modifiée n'importe où dans le graphique d'objet d'un type complexe, la propriété du type parent est marquée comme modifiée et toutes les propriétés du graphique d'objet du type complexe sont mises à jour lorsque la méthode SaveChanges est appelée.

  • Les objets complexes qui héritent de ComplexObject sont instanciés lors de l'accès à la propriété de type complexe, et non lorsque l'objet parent est instancié.

  • Lorsqu'une classe de données personnalisée hérite de EntityObject, les classes de type complexe doivent hériter de ComplexObject.

  • Vous pouvez utiliser des types complexes lorsque vous implémentez des interfaces de classe de données personnalisées, comme IEntityWithKey. Toutefois, la méthode recommandée pour utiliser des types complexes avec des classes de données personnalisées est d'hériter de EntityObject et de ComplexObject. Pour plus d'informations, voir Personnalisation des objets (Entity Framework).

Voir aussi

Autres ressources

Utilisation d'objets (Entity Framework)