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 仅影响传递给方法的特定对象。 如果要分离的对象在对象上下文中具有相关对象,则那些相关对象不会分离。

  • 分离对象不影响数据源中的数据。

  • 在分离操作过程中不会强制执行级联删除指令和引用约束。

有关详细信息,请参阅附加和分离对象

适用于

另请参阅