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. 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 Entity Framework . Pour plus d'informations, consultez Élément ComplexType (CSDL).
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 : interroger les 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.
Lorsque la couche objet est générée par les outils Entity Data Model , des objets complexes sont instanciés lors de l'accès à la propriété de type complexe, et non lorsque l'objet parent est instancié.
Lors de l'utilisation des types POCO (objets CLR « classiques ») qui contiennent des propriétés de type complexe, vous devez également tenir compte des points suivants :
Vous devez définir le type complexe en tant que class.
Les modifications apportées aux membres de l'instance du type complexe sont toujours détectées via la méthode d'instantané. Pour plus d'informations, consultez Suivi des modifications dans les entités POCO (Entity Framework).
Les rubriques suivantes montrent comment effectuer diverses tâches impliquant des types complexes avec ADO.NET Entity Data Model Designer :
How to: Create and Modify Complex Types
How to: Add a Complex Type Property to an Entity
How to: Refactor Existing Properties into a Complex type Property
How to: Map Complex Type Properties to Table Columns
How to: Map a Function Import to a Complex Type