Объекты сложных типов (платформа Entity Framework)

Сложные типы — это нескалярные свойства типов сущностей, которые позволяют организовать в сущностях скалярные свойства. Подобно сущностям, сложные типы состоят из скалярных свойств или свойств других сложных типов. Поскольку сложные типы не имеют ключей, объекты таких типов не могут управляться Entity Framework отдельно от их родительских объектов. Дополнительные сведения см. в разделе Элемент ComplexType (язык CSDL).

Если средства платформы Entity Framework формируют объекты, представляющие типы сущности, эти объекты наследуются от класса EntityObject. Аналогично объекты, сформированные для сложных типов, наследуются от класса ComplexObject. Оба эти класса наследуются от базового класса StructuralObject. К скалярным свойствам объектов сложного типа доступ осуществляется, как и к другим скалярным свойствам. Дополнительные сведения см. в разделе Как запрашивать сложные типы (платформа Entity Framework).

При работе с объектами, представляющими сложные типы, следует учитывать следующее.

  • Свойства сложных типов не могут иметь значение null. Если вызывается метод SaveChanges и обнаруживается неопределенный сложный объект, то возникает исключение InvalidOperationException. Как и скалярные свойства сущностей, скалярные свойства сложных объектов могут принимать значение null.

  • Сложные типы не могут наследоваться от других сложных типов.

  • Если в графе объектов сложного типа меняется какое-либо свойство, то свойство родительского типа помечается как изменившееся и при вызове метода SaveChanges обновляются все свойства в графе объектов сложного типа.

  • Если уровень объектов создается с помощью средств модель EDM (сущностная модель данных) , экземпляры сложных объектов создаются при доступе к свойству сложного типа, а не при создании экземпляра родительского объекта.

При работе с типами POCO (традиционные объекты CLR), которые содержат свойства сложного типа, также следует принимать во внимание следующие соображения.

В следующих разделах показано, как выполнять различные задачи, в которых используются сложные типы и Конструктор моделей EDM ADO.NET.

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

См. также

Основные понятия

Работа с объектами (платформа Entity Framework)