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, они не будут автоматически отсоединены.
Исключения
Значение параметра entity
— null
.
Сущность 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 затрагивает только конкретный объект, который передается этому методу. Если у отсоединяемого объекта в контексте объекта есть связанные объекты, они не отсоединяются.
Отсоединение объектов не влияет на данные в источнике данных.
Во время операции отсоединения не применяются директивы каскадного удаления и ссылочные ограничения.
Дополнительные сведения см. в разделе Присоединение и отсоединение объектов.