中斷連結物件 (Entity Framework)
Entity Framework 支援需要長時間執行之物件內容的案例。例如,您可能會在 Windows 應用程式 (其中的資料物件與視覺控制項繫結,而且在此控制項中顯示資料時必須保存物件) 中找到這個案例。在物件內容中執行查詢時,傳回的物件會自動附加到物件內容。這表示,在相同的物件內容中執行重複的查詢將會增加物件內容的記憶體需求。當使用 NoTracking 的 MergeOption 值來執行查詢時,會發生此例外狀況。在此情況下,不會將物件附加到物件內容。
物件服務可讓您將物件與物件內容中斷連結。當不再需要物件時,可以中斷連結。物件內容不會參考中斷連結的物件,而且 .NET Framework 可以回收這些物件的資源。
若要將物件中斷連結,您可呼叫 Detach 方法並傳遞所中斷連結之物件的參考,如下列範例所示:
' Detach the first SalesOrderDetail in the collection.
context.Detach(order.SalesOrderDetail.First())
// Detach the first SalesOrderDetail in the collection.
context.Detach(order.SalesOrderDetail.First());
下列考量適用於中斷連結物件時:
Detach 只會影響傳遞給此方法的特定物件。如果中斷連結的物件在物件內容中有相關物件,這些物件並不會中斷連結。
中斷連結的物件並不會維護關聯性資訊。
當物件中斷連結時,並不會維護物件狀態資訊。其中包括追蹤的變更和暫時性的索引鍵值。
中斷連結物件不會影響資料來源中的資料。
在中斷連結作業期間,不會強制執行串聯 (Cascade) 刪除指示詞和參考條件約束。
雖然中斷物件連結確實有好處,但是也應該要考量執行此作業所需的額外處理。當使用者資料的範圍變更之後 (例如顯示具有不同資料集的新表單),您應該考慮建立新的 ObjectContext 執行個體,而不要只是將物件與現有的 ObjectContext 中斷連結。
如需詳細資訊,請參閱 HOW TO:從物件內容中斷物件的連結 (Entity Framework)。