MergeOption 列舉
定義
重要
部分資訊涉及發行前產品,在發行之前可能會有大幅修改。 Microsoft 對此處提供的資訊,不做任何明確或隱含的瑕疵擔保。
指定載入內容物件中的物件如何與已經位於物件內容中的物件合併。
public enum class MergeOption
public enum MergeOption
type MergeOption =
Public Enum MergeOption
- 繼承
欄位
AppendOnly | 0 | 不存在物件內容中的物件會附加至內容。 如果某個物件已經存在內容中,就不會使用資料來源值來覆寫項目中物件屬性的目前和原始值。 物件項目的狀態和項目中物件屬性的狀態都不會變更。 AppendOnly 是預設的合併選項。 |
NoTracking | 3 | 物件會保持處於 Detached 狀態中,而且不會在 ObjectStateManager 中追蹤。 不過,具有 Proxy 的 Entity Framework 產生的實體和 POCO 實體會維護對象內容的參考,以協助載入相關的物件。 |
OverwriteChanges | 1 | 不存在物件內容中的物件會附加至內容。 如果某個物件已經存在內容中,就會使用資料來源值來覆寫項目中物件屬性的目前和原始值。 物件項目的狀態會設定為 Unchanged,而且沒有屬性會標示為已修改。 |
PreserveChanges | 2 | 不存在物件內容中的物件會附加至內容。 |
備註
Entity Framework 只會維護具有快取中特定實體索引鍵之物件的單一實例。 對像是 EntityKey 代表物件身分識別的不可變物件。 實體索引鍵是用來執行物件內容中的識別解析。 如需詳細資訊,請參閱 使用實體密鑰。 如果已經追蹤具有相同身分識別的實體,則來自數據源的數據和狀態管理員中的數據會根據 MergeOption 查詢的合併。
其他相關信息 MergeOption.PreserveChanges
如果實體的狀態為 EntityState.Unchanged,就會使用資料來源值來覆寫項目中的目前和原始值。 實體的狀態會維持 EntityState.Unchanged,而且沒有屬性會標示為已修改。
如果實體的狀態為 EntityState.Modified,就不會使用資料來源值來覆寫已修改屬性的目前值。 不過,系統會使用資料來源的值來覆寫未修改屬性的原始值。
在 .NET Framework 4 中,Entity Framework 會將未修改之屬性的目前值與從數據源傳回的值進行比較。 如果這些值不同,屬性就會標示為已修改。
當您呼叫 ObjectContext.SaveChanges 時,只有已修改的屬性會保存到資料來源。