共用方式為


存取複寫中繼資料

中繼資料儲存服務會儲存兩組中繼資料:一組代表整個複寫,一組代表要進行同步處理的個別項目。兩組都是使用 ReplicaMetadata (適用於 Managed 程式碼) 或 IReplicaMetadata (適用於 Unmanaged 程式碼) 進行操控。

注意

  屬性變更不是透過直接在複寫中繼資料或項目中繼資料物件上設定屬性,儲存於中繼資料存放區。屬性變更是使用 SaveReplicaMetadataSaveItemMetadata (適用於 Managed 程式碼),或者 IReplicaMetadata::SaveReplicaMetadataIReplicaMetadata::SaveItemMetadata (適用於 Unmanaged 程式碼) 進行儲存。

複寫中繼資料

所儲存的複寫中繼資料包括:複寫識別碼、複寫的滴答計數、目前的複寫知識,以及複寫的被遺忘的知識。中繼資料存放區也提供自訂中繼資料欄位,可用來儲存與複寫相關聯的任何提供者特屬中繼資料。這個欄位可以使用 CustomReplicaMetadata 屬性 (適用於 Managed 程式碼) 或 IReplicaMetadata::SetCustomFieldMetadata 方法 (適用於 Unmanaged 程式碼) 來設定。

項目中繼資料

項目中繼資料包含項目的全域識別碼、目前版本和建立版本、一個指出此項目是否已經從項目存放區中刪除的值,以及初始化複寫中繼資料時指定的任何自訂欄位。複寫中繼資料存放區提供方法,可用來建立新的項目中繼資料、刪除項目中繼資料,或是根據項目或自訂欄位值的全域識別碼尋找項目中繼資料。

Managed 程式碼:項目中繼資料是以 ItemMetadata 物件代表。若要使用索引欄位值搜尋項目,請將欄位名稱和值傳遞至 FindItemMetadataByIndexedField

Unmanaged 程式碼:項目中繼資料是以 IItemMetadata 物件代表。若要使用索引欄位值搜尋項目,請使用 IReplicaMetadata::CreateEmptyFieldValue,建立空白的 IFieldValue 物件。在 IFieldValue 物件上設定要搜尋的值,然後呼叫 IReplicaMetadata::FindItemMetadataByIndexedFields

Security note安全性附註

若要保護使用者資料,當某個項目標示為已刪除時,您就應該從該項目的中繼資料中移除所有使用者資料,例如自訂索引欄位。當某個項目標示為已刪除時,中繼資料儲存服務就會自動移除該項目的所有變更單位資訊。

快取

複寫中繼資料和項目中繼資料與物件會針對該複寫或項目使用中繼資料的記憶體中快取。快取是在初始化中繼資料物件時擴展,之後任何時候都無法再重新整理。也就是說,在特定情況下,記憶體中表示將與中繼資料存放區檔案中不同,例如:

  • 當更新設定為中繼資料物件,並使用其中一個儲存方法來儲存但尚未寫入磁碟時,例如尚未認可明確交易時。

  • 為相同的複寫或項目建立多個中繼資料物件,而其中一個執行個體進行並認可更新時。在此情況下,未進行變更的物件將不是目前物件,而要取得其中繼資料的呼叫會傳回更新之前的值。

請參閱

參考

IReplicaMetadata 介面
IItemMetadata 介面
IFieldValue 介面
ReplicaMetadata
ItemMetadata

其他資源

Sync Framework Metadata Storage Service