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


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

Службы объектов — это компонент платформы Entity Framework, позволяющий выполнять запросы, вставлять, обновлять и удалять данные, представленные как строго типизированные объекты CLR, которые являются экземплярами типов сущности. Службы объектов поддерживают как запросы LINQ, так и запросы Entity SQL к типам, которые определены в модели Entity Data Model (EDM). Службы объектов материализуют возвращаемые данные в виде объектов и переносят изменения объектов обратно в источник данных. Кроме того, они предоставляют средства для отслеживания изменений, привязки объектов к элементам управления и обработки параллелизма. Службы объектов реализуются с помощью классов в пространствах имен System.Data.Objects и System.Data.Objects.DataClasses.

Контекст объекта

Класс ObjectContext является первичным классом для взаимодействия с данными в форме объектов, которые являются экземплярами типов сущностей, определенных в модели EDM. Экземпляр класса ObjectContext инкапсулирует следующее:

  • Соединение с базой данных в форме объекта EntityConnection.

  • Метаданные, описывающие модель, в форме объекта MetadataWorkspace.

  • Диспетчер ObjectStateManager, который отслеживает объекты при выполнении операций создания, обновления и удаления.

Средства Entity Framework получают файл на языке CSDL и формируют код уровня объектов. Этот код используется для работы с данными сущностей как с объектами и использования функциональных возможностей служб объектов. Этот сформированный код включает следующие классы данных:

  • Типизированный класс ObjectContext. Данный класс представляет контейнер EntityContainer для модели и является производным от ObjectContext.

  • Классы, представляющие типы сущностей и наследующие от EntityObject.

  • Классы, представляющие сложные типы и наследующие от ComplexObject.

NoteПримечание.

Безопасная многопоточная работа класса ObjectContext не гарантируется. В многопоточных сценариях целостность объектов данных в классе ObjectContext гарантировать невозможно.

Использование служб объектов

Службы объектов поддерживают следующие варианты поведения для программирования на платформе Entity Framework.

Запросы к данным как к объектам

Службы объектов позволяют с помощью LINQ, Entity SQL или методов построителя запросов выполнять запросы к модели Entity Data Model и возвращать данные в виде объектов. Дополнительные сведения см. в разделе Запросы объектов (платформа Entity Framework).

Формирование результатов запроса

По умолчанию службы объектов возвращают лишь те объекты, которые прямо указаны в запросе. Когда существуют связи между объектами, можно указывать, следует ли запросу возвращать связанные объекты. Кроме того, связанные объекты можно загружать в ходе последующего запроса. Дополнительные сведения см. в разделе Формирование результатов запроса (Entity Framework).

Составление запросов с помощью методов построителя

В службах объектов реализованы методы для ObjectQuery, которые используются с целью формирования запросов, эквивалентных запросам Entity SQL и LINQ to Entities. Дополнительные сведения см. в разделе Методы построителя запросов (платформа Entity Framework).

Добавление, изменение и удаление объектов

Службы объектов сохраняют объекты данных в памяти и обеспечивают возможность добавления, изменения и удаления объектов внутри контекста объекта. Вносимые в объекты изменения отслеживаются контекстом объекта. Дополнительные сведения см. в разделе Добавление, изменение и удаление объектов (платформа Entity Framework).

Сохранение изменений в источник данных

Службы объектов кэшируют изменения объектов в контексте объекта. Службы объектов сохраняют изменения в источник данных при явном на то запросе. Дополнительные сведения см. в разделе Сохранение изменений и управление параллелизмом (платформа Entity Framework).

Привязка объектов к элементам управления

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

Присоединение объектов

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

Отсоединение объектов

В некоторых случаях экземпляр контекста объекта необходимо сохранять до завершения выполнения приложения – например, когда объекты привязаны к элементам управления Windows Forms. Службы объектов дают возможность управлять размерами контекста объекта; по миновании надобности объекты отсоединяются, что обеспечивает высвобождение ресурсов. Дополнительные сведения см. в разделе Отсоединение объектов (платформа Entity Framework).

Сериализация объектов

Службы объектов поддерживают контрактную сериализацию данных WCF, двоичную сериализацию и XML-сериализацию для объектов. Контрактная сериализация данных WCF полезна при работе с веб-службами. Двоичная сериализация особенно полезна при использовании состояния представления для сохранения объектов в приложении ASP.NET. Дополнительные сведения см. в разделе Сериализация объектов (платформа Entity Framework).

Управление идентификаторами объектов и отслеживание изменений

Службы объектов используют значения идентификаторов для отслеживания изменений объектов, обработки конфликтов и принятия решений относительно того, когда следует получать данные из источника данных. Дополнительные сведения см. в разделе Управление контекстом объекта (платформа Entity Framework).

Управление параллелизмом

Службы объектов могут отслеживать параллелизм, когда атрибуту ConcurrencyMode для одного или большего числа свойств задается значение fixed. В этом случае при обнаружении нарушений параллелизма службы объектов вызывают те или иные исключения. Дополнительные сведения см. в разделе Сохранение изменений и управление параллелизмом (платформа Entity Framework).

Управление соединениями

Службы объектов дают возможность явно управлять соединениями, используемыми контекстом объектов, и обеспечивают пользователя собственными соединениями для контекста объекта. Дополнительные сведения см. в разделе Управление соединениями в службах объектов (платформа Entity Framework).

Управление транзакциями

Службы объектов поддерживают транзакции .NET Framework для координации операций над источником данных и прикрепления к распределенным транзакциям. Дополнительные сведения см. в разделе Управление транзакциями в службах объектов (платформа Entity Framework).

Применение пользовательских объектов с моделью EDM

Службы объектов позволяют пользователям вручную определять свои объекты или использовать существующие объекты с Entity Data Model. Дополнительные сведения см. в разделе Настройка объектов (платформа Entity Framework).

См. также

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

Службы объектов (платформа Entity Framework)
Задачи Entity Framework