Отсоединение объектов (платформа 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)