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


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

Платформа Entity Framework поддерживает сценарии, для которых требуется длительный контекст объекта. Например, этот сценарий можно найти в приложении Windows, в котором объекты данных привязаны к визуальному элементу управления и объекты должны быть неизменными, пока данные отображаются в элементе управления. Когда запрос выполняется в контексте объекта, возвращенные объекты автоматически присоединяются к контексту. Это значит, что выполнение повторных запросов в том же контексте объекта увеличит требования к памяти контекста объекта. Исключение — если запрос выполняется со значением MergeOption, равным NoTracking. В этом случае объекты не присоединяются к контексту объекта.

Службы объектов позволяют отсоединить объекты от контекста объекта. Если объекты более не требуются, их можно отсоединить. Контекст объекта не содержит ссылок на отсоединенные объекты и их ресурсы могут быть возвращены платформе .NET Framework.

Чтобы отсоединить объекты, вызовите метод Detach, передав ему ссылку на отсоединяемый объект, как в следующем примере.

' Detach the first SalesOrderDetail in the collection.
context.Detach(order.SalesOrderDetail.First())
// Detach the first SalesOrderDetail in the collection.
context.Detach(order.SalesOrderDetail.First());

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

  • Метод Detach работает только переданным ему объектом. Если у отсоединяемого объекта в контексте объекта есть связанные объекты, они не отсоединяются.

  • Сведения о связях отсоединенного объекта не сохраняются.

  • Сведения о состоянии объекта после его отсоединения не сохраняются. Это относится к отслеживаемым изменениям и временным значениям ключей.

  • Отсоединение объектов не влияет на данные в источнике данных.

  • Во время операции отсоединения не применяются директивы каскадного удаления и ссылочные ограничения.

  • Следует сравнить преимущества отсоединения объектов с дополнительными затратами на обработку, необходимую для выполнения операции. При изменении области данных пользователя, например при отображении новой формы с другим набором данных, необходимо создать новый экземпляр ObjectContext, а не просто отсоединить объект от существующего контекста ObjectContext.

Дополнительные сведения см. в разделе Как отсоединить объекты от контекста объекта (платформа Entity Framework).

См. также

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

Присоединение объектов (платформа Entity Framework)

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

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