Objekte komplexer Typen (Entity Framework)
Komplexe Typen sind nicht skalare Eigenschaften von Entitätstypen, mit deren Hilfe skalare Eigenschaften in Entitäten organisiert werden können. Komplexe Typen bestehen wie Entitäten aus skalaren Eigenschaften oder anderen Eigenschaften von komplexem Typ. Da komplexe Typen nicht über Schlüssel verfügen, können Objekte komplexer Typen von Entity Framework nicht getrennt vom übergeordneten Objekt verwaltet werden. Weitere Informationen hierzu finden Sie unter ComplexType-Element (CSDL).
Wenn die Entity Framework-Tools Objekte generieren, die Entitätstypen darstellen, erben diese Objekte von EntityObject. Ebenso erben für komplexe Typen generierte Objekte von ComplexObject. Beide Klassen erben von der StructuralObject-Basisklasse. Auf die skalaren Eigenschaften von Objekten komplexer Typen kann wie auf andere skalare Eigenschaften zugegriffen werden. Weitere Informationen finden Sie unter Gewusst wie: Abfrage komplexer Typen (Entity Framework).
Wenn Sie mit Objekten arbeiten, die komplexe Typen darstellen, beachten Sie die folgenden Punkte:
Eigenschaften komplexer Typen können nicht den Wert NULL haben. Eine InvalidOperationException wird ausgelöst, wenn SaveChanges aufgerufen wird und ein komplexes Objekt mit dem Wert NULL festgestellt wird. Wie skalare Eigenschaften von Entitäten können skalare Eigenschaften komplexer Objekte den Wert NULL haben.
Komplexe Typen können nicht von anderen komplexen Typen erben.
Wird eine Eigenschaft im Objektdiagramm eines komplexen Typs geändert, wird die Eigenschaft des übergeordneten Typs als geändert gekennzeichnet. Alle Eigenschaften im Objektdiagramm des komplexen Typs werden beim Aufruf von SaveChanges aktualisiert.
Wenn die Objektebene durch die Entity Data Model -Tools generiert wird, werden komplexe Objekte dann instanziiert, wenn auf die Eigenschaft vom komplexen Typ zugegriffen wird, und nicht, wenn das übergeordnete Objekt instanziiert wird.
Wenn sie mit POCO ("plain-old" CLR Objects)-Typen arbeiten, die komplexe Typeigenschaften enthalten, ist außerdem Folgendes zu beachten:
Sie müssen den komplexen Typ als class definieren.
Änderungen an den Membern der Instanz des komplexen Typs werden mithilfe der Momentaufnahmemethode immer erkannt. Weitere Informationen finden Sie unter Verfolgen von Änderungen in POCO-Entitäten (Entity Framework).
In den folgenden Themen wird gezeigt, wie verschiedene Aufgaben, die komplexe Typen betreffen, mit dem ADO.NET Entity Data Model Designer ausgeführt werden:
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