Поделиться через


Метод ReplicaMetadata.GetLocalVersions

При переопределении в производном классе возвращает пакет изменений, содержащий версии элементов и базовые единицы, которые хранятся в данной реплике. Эти элементы и базовые единицы соответствуют элементам и базовым единицам, на которые имеются ссылки в пакете изменений, полученном от другого поставщика.

Пространство имен: Microsoft.Synchronization.MetadataStorage
Сборка: Microsoft.Synchronization.MetadataStorage (в microsoft.synchronization.metadatastorage.dll)

Синтаксис

'Декларация
Public MustOverride Function GetLocalVersions ( _
    sourceChanges As ChangeBatch _
) As IEnumerable(Of ItemChange)
'Применение
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>

Параметры

  • sourceChanges
    Пакет изменений, полученный от другого поставщика, который будет применен к хранилищу элементов, связанному с данной репликой.

Возвращаемое значение

Пакет изменений, содержащий версии элементов и базовые единицы, которые хранятся в данной реплике и соответствуют элементам и базовым единицам, на которые были ссылки в пакете изменений, полученном от другого поставщика.

Исключения

Тип исключения Условие

ObjectDisposedException

Объект удален или неправильно инициализирован.

ArgumentNullException

Параметр sourceChanges равен пустая ссылка (Nothing в Visual Basic).

Замечания

Этот метод упрощает реализацию метода ProcessChangeBatch для службы синхронизации.

Значения версий в пакете изменений, возвращаемых этим методом, используются объектами применения изменений для обнаружения конфликтов.

Примечания по реализации. Пакет изменений, возвращаемый этим методом, должен содержать по одной записи для каждой из записей в параметре sourceChanges, включая записи базовых единиц. Если элемент существует в хранилище, то его запись должна содержать сведения о версии для этой реплики. Если элемент не существует, то его версия должна быть установлена в значение SyncVersion.UnknownVersion, а свойство ItemChange.ChangeKind — в значение UnknownItem.

Пример

В следующем примере приведена реализация метода KnowledgeSyncProvider.ProcessChangeBatch с использованием метода GetLocalVersions, позволяющего получить версии назначения для изменений источника и передать результат методу NotifyingChangeApplier.ApplyChanges.

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);
}

См. также

Справочник

Класс ReplicaMetadata
Элементы ReplicaMetadata
Пространство имен Microsoft.Synchronization.MetadataStorage