ObjectContext.Detach(Object) 方法
定義
重要
部分資訊涉及發行前產品,在發行之前可能會有大幅修改。 Microsoft 對此處提供的資訊,不做任何明確或隱含的瑕疵擔保。
從物件內容中移除物件。
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 中移除此物件。 這會停用該物件的變更追蹤和識別 (Identity) 解析。 如需詳細資訊,請參閱連結和中斷連結物件。
呼叫 Detach 方法之後,系統將不再保留指向此物件的參考,而且可能會由記憶體回收行程收集這些參考。
注意
只有當使用者程式碼沒有已中斷連結物件的任何參考時,才可以進行記憶體回收。
下列考量適用於中斷連結物件時:
Detach 只會影響傳遞給此方法的特定物件。 如果中斷連結的物件在物件內容中有相關物件,這些物件並不會中斷連結。
中斷連結物件不會影響資料來源中的資料。
在中斷連結作業期間,不會強制執行串聯 (Cascade) 刪除指示詞和參考條件約束 (Constraint)。
如需詳細資訊,請參閱連結和中斷連結物件。