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


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

Службы объектов позволяют отсоединять объекты от контекста объекта, если эти объекты больше не нужны. Для этого вызывается метод Detach. Это действие снижает объем используемой памяти.

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

Пример в этом разделе основан на модели Adventure Works Sales. Чтобы запустить код, используемый в данном примере, нужно сначала добавить к проекту модель AdventureWorks Sales и настроить его для использования платформы Entity Framework. Для этого выполните инструкции из разделов Как вручную настроить проект Entity Framework и Как определить модель EDM вручную (платформа Entity Framework).

Примеры

Этот пример демонстрирует отсоединение от контекста ObjectContext объектов SalesOrderDetail и SalesOrderHeader, больше не нужных данному приложению.

' This method is called to detach SalesOrderHeader objects and 
' related SalesOrderDetail objects from the supplied object
' context when no longer needed by the application. 
' Once detached, the resources can be garbage collected.
Private Shared Sub DetachOrders(ByVal context As ObjectContext, _
                          ByVal order As SalesOrderHeader)
    Try
        ' Detach each item from the collection.
        While order.SalesOrderDetail.Count > 0
            ' Detach the first SalesOrderDetail in the collection.
            context.Detach(order.SalesOrderDetail.First())
        End While

        ' Detach the order.
        context.Detach(order)

    Catch ex As InvalidOperationException
        Console.WriteLine(ex.ToString())
    End Try
End Sub
// This method is called to detach SalesOrderHeader objects and 
// related SalesOrderDetail objects from the supplied object
// context when no longer needed by the application. 
// Once detached, the resources can be garbage collected.
private static void DetachOrders(ObjectContext context,
    SalesOrderHeader order)
{
    try
    {
        // Detach each item from the collection.
        while (order.SalesOrderDetail.Count > 0)
        {
            // Detach the first SalesOrderDetail in the collection.
            context.Detach(order.SalesOrderDetail.First());
        }

        // Detach the order.
        context.Detach(order);
    }
    catch (InvalidOperationException ex)
    {
        Console.WriteLine(ex.ToString());
    }
}

См. также

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

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

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

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