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


ObjectContext.Detach(Object) Метод

Определение

Удаляет объект из контекста объекта.

public:
 void Detach(System::Object ^ entity);
public void Detach (object entity);
member this.Detach : obj -> unit
Public Sub Detach (entity As Object)

Параметры

entity
Object

Отсоединяемый объект. Удаляется только entity; при наличии связанных объектов, отслеживаемых тем же ObjectStateManager, они не будут автоматически отсоединены.

Исключения

Значение параметра entitynull.

Сущность entity не ассоциирована с этим контекстом ObjectContext (например, она вновь создана и еще не ассоциирована с каким-либо контекстом, или была получена через какой-либо другой контекст, или уже была отсоединена).

Примеры

// 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.SalesOrderDetails.Count > 0)
        {
            // Detach the first SalesOrderDetail in the collection.
            context.Detach(order.SalesOrderDetails.First());
        }

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

Комментарии

Удаляет объект из диспетчера ObjectStateManager. При этом для этого объекта отключается отслеживание изменений и разрешение идентификаторов. Дополнительные сведения см. в разделе Присоединение и отсоединение объектов.

После вызова метода Detach система больше не будет хранить ссылки, указывающие на этот объект и его сможет собрать сборщик мусора.

Примечание

Сборка мусора может произойти только в случае, если в пользовательском коде нет никаких ссылок на отсоединенный объект.

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

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

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

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

Дополнительные сведения см. в разделе Присоединение и отсоединение объектов.

Применяется к

См. также раздел