Поделиться через


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

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

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

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

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

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

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

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

  • Если пользовательский класс данных наследуется от EntityObject, то классы сложного типа должны наследоваться от ComplexObject.

  • Сложные типы можно использовать при реализации интерфейсов пользовательских классов данных, таких как IEntityWithKey. Однако при использовании сложных типов с пользовательскими классами данных рекомендуется наследовать их как от класса EntityObject, так и от ComplexObject. Дополнительные сведения см. в разделе Настройка объектов (платформа Entity Framework).

См. также

Другие ресурсы

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