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


Обнаружение удаленных элементов

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

Алгоритм обнаружения удалений

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

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

  2. Любая запись метаданных, не являющаяся активной, передается в сведениях как удаленная.

  3. Поставщик перечисляет неактивные записи метаданных и отмечает их как удаленные.

Обнаружение удалений с использованием управляемого кода

Доступ к детектору удалений может быть получен с помощью свойства DeleteDetector объекта ReplicaMetadata.

Чтобы переустановить детектор удалений для нового прохода по циклу обнаружения, вызовите MarkAllItemsUnreported.

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

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

Обнаружение удалений с использованием неуправляемого кода

Детектор удалений представляет собой часть объекта IReplicaMetadata.

Чтобы переустановить детектор удалений для нового прохода по циклу обнаружения, вызовите IReplicaMetadata::ResetReportingWatermark.

Активная запись метаданных неявно существует для любого элемента, который был изменен и сохранен с помощью IReplicaMetadata::SaveItemMetadata. Элемент может быть явно сохранен как активный, даже если он не был изменен, путем вызова IReplicaMetadata::ReportLiveItemByGlobalId.

Получите список элементов, которые в настоящее время обнаружены как удаленные, путем вызова IReplicaMetadata::GetUnreportedItems. Элементы в этом списке должны быть отмечены как удаленные в хранилище метаданных с использованием IItemMetadata::MarkAsDeleted.

См. также

Справочник

ReplicaMetadata

DeleteDetector

Другие ресурсы

Служба хранилища метаданных платформы Sync Framework

Интерфейс IReplicaMetadata