Zugreifen auf Replikatmetadaten

Der Metadatenspeicherdienst speichert zwei Gruppen von Metadaten: eine, die das gesamte Replikat darstellt, und eine, die die einzelnen zu synchronisierenden Elemente darstellt. Beide werden mit ReplicaMetadata (für verwalteten Code) oder IReplicaMetadata (für nicht verwalteten Code) bearbeitet.

Hinweis

  Eigenschaftenänderungen werden nicht durch einfaches Festlegen einer Eigenschaft für die Replikatmetadaten oder das Elementmetadatenobjekt im Metadatenspeicher gespeichert. Eigenschaftenänderungen werden mit SaveReplicaMetadata oder SaveItemMetadata (für verwalteten Code) bzw. mit IReplicaMetadata::SaveReplicaMetadata oder IReplicaMetadata::SaveItemMetadata (für nicht verwaltteten Code) gespeichert.

Replikatmetadaten

Die gespeicherten Replikatmetadaten enthalten die Replikat-ID, die Taktanzahl für das Replikat, das aktuelle Wissen des Replikats und das vergessene Wissen des Replikats. Im Metadatenspeicher ist auch ein benutzerdefiniertes Metadatenfeld verfügbar, das verwendet werden kann, um anbieterspezifische Metadaten zu speichern, die dem Replikat zugeordnet sind. Dieses Feld kann mit der CustomReplicaMetadata-Eigenschaft (für verwalteten Code) oder der IReplicaMetadata::SetCustomFieldMetadata-Methode (für nicht verwalteten Code) festgelegt werden.

Elementmetadaten

Die Elementmetadaten enthalten die globale ID des Elements, die aktuelle Version und die Erstellungsversion, einen Wert, der angibt, ob das Element aus dem Elementspeicher gelöscht wurde, sowie alle beim Initialisieren der Replikatmetadaten angegebenen benutzerdefinierten Felder. Das Replikatmetadatenobjekt stellt Methoden zur Verfügung, die verwendet werden können, um neue Elementmetadaten zu erstellen, Elementmetadaten zu löschen oder Elementmetadaten anhand der globalen ID des Elements oder eines benutzerdefinierten Feldwerts zu finden.

Verwalteter Code Elementmetadaten werden durch ein ItemMetadata-Objekt dargestellt. Um mithilfe eines Indexfeldwerts nach einem Element zu suchen, übergeben Sie den Feldnamen und -wert an FindItemMetadataByIndexedField.

Nicht verwalteter Code Elementmetadaten werden durch ein IItemMetadata-Objekt dargestellt. Um mithilfe eines Indexfeldwerts nach einem Element zu suchen, erstellen Sie ein leeres IFieldValue-Objekt mit IReplicaMetadata::CreateEmptyFieldValue. Legen Sie den gesuchten Wert für das IFieldValue-Objekt fest, und rufen Sie IReplicaMetadata::FindItemMetadataByIndexedFields auf.

Zwischenspeichern

Die Replikatmetadaten, Elementmetadaten und Objekte verwenden einen speicherresidenten Cache der Metadaten für dieses Replikat bzw. Element. Der Cache wird beim Initialisieren des Metadatenobjekts mit Daten vom Datenträger gefüllt und danach nicht mehr aktualisiert. Das bedeutet, dass sich die speicherresidente Darstellung unter bestimmten Bedingungen von der Darstellung in der Metadatenspeicherdatei unterscheidet, beispielsweise:

  • Wenn Aktualisierungen für ein Metadatenobjekt festgelegt und mithilfe einer der Speichermethoden gespeichert, jedoch noch nicht auf den Datenträger geschrieben wurden, z. B. wenn für eine explizite Transaktion kein Commit ausgeführt wurde.

  • Wenn mehr als ein Metadatenobjekt für dasselbe Replikat oder Element erstellt wurde, und für eine Instanz eine Aktualisierung oder ein Commit für eine Aktualisierung ausgeführt wird. In diesem Fall ist das Objekt, für das die Änderung nicht vorgenommen wurde, nicht aktuell, und bei Aufrufen zum Abrufen seiner Metadaten werden die Werte vor der Aktualisierung zurückgegeben.

Siehe auch

Verweis

IReplicaMetadata-Schnittstelle
IItemMetadata-Schnittstelle
IFieldValue-Schnittstelle
ReplicaMetadata
ItemMetadata

Weitere Ressourcen

Der Metadatenspeicherdienst von Sync Framework