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 中移除此物件。 這會停用該物件的變更追蹤和識別 (Identity) 解析。 如需詳細資訊,請參閱 附加和卸離物件

呼叫 Detach 方法之後,系統將不再保留指向此物件的參考,而且可能會由記憶體回收行程收集這些參考。

注意

只有當使用者程式碼沒有已中斷連結物件的任何參考時,才可以進行記憶體回收。

下列考量適用於中斷連結物件時:

  • Detach 只會影響傳遞給此方法的特定物件。 如果中斷連結的物件在物件內容中有相關物件,這些物件並不會中斷連結。

  • 中斷連結物件不會影響資料來源中的資料。

  • 在中斷連結作業期間,不會強制執行串聯 (Cascade) 刪除指示詞和參考條件約束 (Constraint)。

如需詳細資訊,請參閱 附加和卸離物件

適用於

另請參閱