Метод 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
Пакет изменений, полученный от другого поставщика, который будет применен к хранилищу элементов, связанному с данной репликой.
Возвращаемое значение
Пакет изменений, содержащий версии элементов и базовые единицы, которые хранятся в данной реплике и соответствуют элементам и базовым единицам, на которые были ссылки в пакете изменений, полученном от другого поставщика.
Исключения
Тип исключения | Условие |
---|---|
Объект удален или неправильно инициализирован. |
|
Параметр 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