Share via


ReplicaMetadata.GetLocalVersions-Methode

Ruft, wenn in einer abgeleiteten Klasse überschrieben, ein Änderungsbatch mit den Elementversionen und Änderungseinheiten ab, die in diesem Replikat gespeichert sind. Diese Elemente und Änderungseinheiten entsprechen den Elementen und Änderungseinheiten, auf die in einem Batch von Änderungen verwiesen wird, der von einem anderen Anbieter gesendet wurde.

Namespace: Microsoft.Synchronization.MetadataStorage
Assembly: Microsoft.Synchronization.MetadataStorage (in microsoft.synchronization.metadatastorage.dll)

Syntax

'Declaration
Public MustOverride Function GetLocalVersions ( _
    sourceChanges As ChangeBatch _
) As IEnumerable(Of ItemChange)
'Usage
Dim instance As ReplicaMetadata
Dim sourceChanges As ChangeBatch
Dim returnValue As IEnumerable(Of ItemChange)

returnValue = instance.GetLocalVersions(sourceChanges)
public abstract IEnumerable<ItemChange> GetLocalVersions (
    ChangeBatch sourceChanges
)
public:
virtual IEnumerable<ItemChange^>^ GetLocalVersions (
    ChangeBatch^ sourceChanges
) abstract
public abstract IEnumerable<ItemChange> GetLocalVersions (
    ChangeBatch sourceChanges
)
public abstract function GetLocalVersions (
    sourceChanges : ChangeBatch
) : IEnumerable<ItemChange>

Parameter

  • sourceChanges
    Der Änderungsbatch, der von einem anderen Anbieter gesendet wurde und auf den Elementspeicher angewendet werden soll, der diesem Replikat zugeordnet ist.

Rückgabewert

Ein Änderungsbatch, der die Versionen von Elementen und Änderungseinheiten enthält, die in diesem Replikat gespeichert sind und den Elementen und Änderungseinheiten entsprechen, auf die in einem Änderungsbatch verwiesen wird, der von einem anderen Anbieter gesendet wurde.

Ausnahmen

Ausnahmetyp Bedingung

ObjectDisposedException

Das Objekt wurde verworfen oder nicht ordnungsgemäß initialisiert.

ArgumentNullException

sourceChanges ist NULL.

Hinweise

Diese Methode ist bei der Implementierung der ProcessChangeBatch-Methode für Synchronisierungsanbieter hilfreich.

Beim Anwenden von Änderungen werden zur Konflikterkennung die Versionen im Änderungsbatch verwendet, die von dieser Methode zurückgegeben werden.

Hinweise für Implementierer: Der von dieser Methode zurückgegebene Änderungsbatch muss für jeden Eintrag in sourceChanges einen Eintrag enthalten, einschließlich Änderungseinheitseinträgen. Wenn im Elementspeicher ein Element vorhanden ist, muss dessen Eintrag die Versionsinformationen für dieses Replikat enthalten. Wenn ein Element nicht vorhanden ist, muss dessen Version auf SyncVersion.UnknownVersion und dessen ItemChange.ChangeKind-Eigenschaft auf UnknownItem festgelegt werden.

Beispiel

Im folgenden Beispiel wird KnowledgeSyncProvider.ProcessChangeBatch mithilfe von GetLocalVersions implementiert, um die Zielversionen von Quelländerungen abzurufen und das Ergebnis an NotifyingChangeApplier.ApplyChanges zu übergeben:

public override void ProcessChangeBatch(ConflictResolutionPolicy resolutionPolicy, ChangeBatch sourceChanges, object changeDataRetriever, SyncCallbacks syncCallbacks, SyncSessionStatistics sessionStatistics)
{
    // Use the metadata storage service to get the local versions of changes received from the source provider.
    IEnumerable<ItemChange> localVersions = _ContactStore.ContactReplicaMetadata.GetLocalVersions(sourceChanges);

    // Use a NotifyingChangeApplier object to process the changes. Note that this object is passed as the INotifyingChangeApplierTarget
    // object that will be called to apply changes to the item store.
    NotifyingChangeApplier changeApplier = new NotifyingChangeApplier(ContactStore.ContactIdFormatGroup);
    changeApplier.ApplyChanges(resolutionPolicy, sourceChanges, (IChangeDataRetriever)changeDataRetriever,
        localVersions, _ContactStore.ContactReplicaMetadata.GetKnowledge(), 
        _ContactStore.ContactReplicaMetadata.GetForgottenKnowledge(), this, _sessionContext, syncCallbacks);
}

Siehe auch

Verweis

ReplicaMetadata-Klasse
ReplicaMetadata-Member
Microsoft.Synchronization.MetadataStorage-Namespace