Пространство имен Microsoft.Synchronization.MetadataStorage

Служба хранилища метаданных обеспечивает поддержку для хранения и обработки метаданных синхронизации.

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

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

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

Метаданные реплики инициализируются в хранилище метаданных методом InitializeReplicaMetadata. Параметр FieldSchema этого метода позволяет создать набор настраиваемых полей. Эти поля могут применяться для хранения в хранилище метаданных дополнительных метаданных элементов. Параметр IndexSchema позволяет определять наборы полей в качестве индексов. Их можно использовать для эффективного поиска элементов в хранилище метаданных.

Класс ReplicaMetadata инкапсулирует все метаданные для конкретной реплики. Доступ к метаданным реплики производится через элементы GetKnowledge и ReplicaId.

  • Некоторые методы этого класса реализуют методы службы синхронизации, например метод ReplicaMetadata.GetChangeBatch способен выполнять большую часть работы метода GetChangeBatch класса KnowledgeSyncProvider.

  • Метод GetLocalVersions может быть вызван из метода ProcessChangeBatch службы синхронизации KnowledgeSyncProvider для поиска локальных версий элементов пакета изменений, которые необходимы стороне, применяющей изменения.

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

Поиск метаданных элементов в хранилище метаданных производится методами объекта ReplicaMetadata по идентификаторам элементов или индексируемым полям, например, через метод FindItemMetadataById или FindItemMetadataByIndexedFields. Класс ItemMetadata инкапсулирует все метаданные для конкретного элемента. Он содержит стандартные метаданные синхронизации — ChangeVersion, CreationVersion, GlobalId и IsDeleted. Кроме того, этот класс содержит несколько методов, которые могут применяться для осуществления доступа к любым пользовательским полям, которые были определены при инициализации метаданных реплики.

Классы

  Класс Описание
Public class ChangeUnitMetadata Представляет метаданные, связанные с базовой единицей, содержащейся в элементе в области синхронизации.
Public class DeleteDetector При реализации в производном классе DeleteDetector определяет, какие из элементов были удалены из реплики. Эти элементы должны быть помечены как удаленные в хранилище метаданных.
Public class ExplicitTransactionRequiredException Это исключение генерируется при вызове метода, требующего запуска явной транзакции в хранилище метаданных.
Public class FieldSchema Содержит сведения о схеме, определяющие пользовательское поле элемента в хранилище метаданных.
Public class IndexSchema Одностолбцовый или многостолбцовый индекс, который можно использовать для более эффективного поиска элементов в хранилище метаданных.
Public class ItemMetadata При переопределении представляет метаданные, связанные с элементом в области синхронизации.
Public class ItemMetadataNotFoundException Это исключение генерируется, когда элемент с заданным идентификатором или значением пользовательского поля не был найден в хранилище метаданных.
Public class KeyUniquenessException Исключение, выдаваемое при попытке сохранения элемента, имеющего недопустимый или повторяющийся идентификатор.
Public class MetadataFieldNotFoundException Исключение, выдаваемое в том случае, если именованное настраиваемое поле не существует.
Public class MetadataStorageEngineException Исключение, которое возникает, если при операции подсистемы хранилища метаданных возникает ошибка.
Public class MetadataStore При переопределении представляет хранилище метаданных и предоставляет методы для получения объекта метаданных реплики. Этот объект метаданных реплики используется для доступа к метаданным конкретной реплики. Этот абстрактный базовый класс наследуют все хранилища метаданных, использующие API-интерфейс службы хранилища метаданных.
Public class MetadataStoreException Базовый класс для всех исключений хранилищ метаданных.
Public class MetadataStoreInvalidOperationException Исключение, которое возникает, если вызов метода недопустим при текущем состоянии объекта.
Public class MetadataStoreProviderVersionMismatchException Исключение, которое возникает, если указанная при вызове метода DeserializeReplicaMetadata ожидаемая версия совместимости поставщика не соответствует версии поставщика, сохраненной в сериализованных метаданных.
Public class MultipleReplicasInStoreException Исключение, вызываемое в том случае, если при вызове метода GetSingleReplicaMetadata хранилище метаданных содержит метаданные для более чем одной реплики.
Public class ReplicaMetadata При переопределении в производном классе этот метод предоставляет доступ к метаданным реплики и элемента в хранилище метаданных. Кроме того, класс ReplicaMetadata обеспечивает функции для обнаружения удалений и помощники для реализации методов службы синхронизации.
Public class ReplicaMetadataAlreadyExistsException Исключение, выдаваемое при попытке создания новых метаданных реплики в хранилище метаданных в том случае, если метаданные для данной реплики уже существуют в хранилище метаданных.
Public class ReplicaMetadataInUseException Исключение, выдаваемое при попытке создания более чем одного активного экземпляра ReplicaMetadata для определенного идентификатора реплики.
Public class ReplicaMetadataNotFoundException Исключение, выдаваемое в том случае, если в хранилище метаданных не существует метаданных реплики для указанного идентификатора реплики.
Public class SqlMetadataStore Представляет хранилище метаданных, реализованное с помощью упрощенной базы данных.
Public class SqlSyncFieldValue Представляет значение пользовательского поля элемента.
Public class SqlSyncMetadataStoreSerializer Сериализует и десериализует метаданные для реплики между каноническим форматом файла метаданных и форматом хранения службы хранилища метаданных, зависящей от версии формата метаданных.
Public class SyncFieldValue При переопределении в производном классе представляет значение пользовательского поля элемента.
Public class SyncMetadataStoreSerializer При переопределении в производном классе выполняет сериализацию и десериализацию метаданных для реплики.
Public class UpgradeStartEventArgs Предоставляет данные для события MetadataStoreUpgradeStart.
Public class VersionNotSupportedException Исключение, которое выдается при попытке получения метаданных реплики из хранилища метаданных в том случае, если версия метаданных не поддерживается реализацией хранилища метаданных.

Интерфейсы

  Интерфейс Описание
Public interface IProviderUpgradeCallback При реализации в производном классе представляет методы, которые Sync Framework может вызвать для уведомления поставщика о событиях, происходящих во время обновления хранилища метаданных вследствие изменения версии поставщика.

Делегаты

  Делегат Описание
Public delegate ReplicaMetadata.ItemFilterCallback Представляет метод, который определит, следует ли включать изменение элемента в пакет изменений.