Share via


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:

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

Siehe auch

Konzepte

Arbeiten mit Objekten (Entity Framework)