變更追蹤和識別解析 (Entity Framework)
ObjectQuery 會將此查詢傳回的新物件加入到 ObjectStateManager 所維護的物件快取。ObjectContext 上的 Attach 方法以及 EntityReference 和 EntityCollection 上的 Load 方法也會將物件加入到物件快取。每一個物件內容都有一個 ObjectStateManager。在物件內容中,可以加入、修改及刪除物件,這些動作與資料來源中的資料無關。如果單一物件內容範圍中的多個查詢或載入作業傳回包含重複項目的物件集合,物件服務只會在快取中維護具有特定實體索引鍵之物件的單一執行個體。根據預設,查詢只會傳回尚未在快取中的物件,這表示已經在快取中之物件的變更不會被覆寫。這個行為的控制方式,是針對查詢和載入作業指定 MergeOption 值。預設值為 AppendOnly。這項處理只會將尚未存在的物件載入到物件快取中,這表示現有的物件不會被覆寫。有另一個方式可避免資料庫中的更新去覆寫物件快取中的變更,就是指定 PreserveChanges。這經常用來解析開放式並行例外狀況,同時保存本機內容中的變更。如需詳細資訊,請參閱儲存變更及管理並行 (Entity Framework)。當您指定 OverwriteChanges 時,會使用已經從資料庫具體化的最新物件版本來取代快取中的物件,即使這些物件已有變更亦然。