Partager via


Accès aux métadonnées de réplica

Le service de stockage des métadonnées stocke deux groupes de métadonnées : un qui représente le réplica entier et l'autre qui représente les éléments individuels à synchroniser. Les deux sont manipulés en utilisant ReplicaMetadata (pour le code managé) ou IReplicaMetadata (pour le code non managé).

Notes

  Une modification de propriété n'est pas enregistrée dans le magasin des métadonnées en définissant simplement une propriété sur les métadonnées de réplica ou l'objet des métadonnées de l'élément. Les modifications de propriété sont enregistrées en utilisant SaveReplicaMetadata ou SaveItemMetadata (pour le code managé) ou IReplicaMetadata::SaveReplicaMetadata ou IReplicaMetadata::SaveItemMetadata (pour le code non managé).

Métadonnées de réplica

Les métadonnées de réplica stockées incluent l'ID de réplica, le nombre de cycles pour le réplica, la connaissance actuelle du réplica et la connaissance oubliée du réplica. Le magasin des métadonnées fournit également un champ de métadonnées personnalisé qui peut être utilisé pour stocker toutes les métadonnées spécifiques au fournisseur associées au réplica. Ce champ peut être défini à l'aide de la propriété CustomReplicaMetadata (pour le code managé) ou de la méthode IReplicaMetadata::SetCustomFieldMetadata (pour le code non managé).

Métadonnées d'élément

Les métadonnées d'élément contiennent l'ID global de l'élément, la version actuelle et la version de création, une valeur qui indique si l'élément est supprimé du magasin d'éléments et tous les champs personnalisés spécifiés quand les métadonnées de réplica ont été initialisées. L'objet des métadonnées du réplica fournit des méthodes qui peuvent être utilisées pour créer, supprimer ou rechercher des métadonnées d'élément selon l'ID global de l'élément ou une valeur de champ personnalisé.

Code managé Les métadonnées d'élément sont représentées par un objet ItemMetadata. Pour rechercher un élément en utilisant une valeur de champ d'index, passez le nom et la valeur de champ à FindItemMetadataByIndexedField.

Code non managé Les métadonnées d'élément sont représentées par un objet IItemMetadata. Pour rechercher un élément en utilisant une valeur de champ d'index, créez un objet IFieldValue vide en utilisant IReplicaMetadata::CreateEmptyFieldValue. Définissez la valeur à rechercher sur l'objet IFieldValue et appelez IReplicaMetadata::FindItemMetadataByIndexedFields.

Remarque relative à la sécuritéRemarque relative à la sécurité

Pour protéger les données utilisateur, lorsqu'un élément est marqué comme étant supprimé, toutes les données utilisateur, telles que les champs d'index personnalisés, doivent être supprimées des métadonnées de cet élément. Lorsqu'un élément est marqué comme étant supprimé, le service de stockage des métadonnées supprime automatiquement toutes les informations d'unité de modification relatives à l'élément.

Mise en cache

Les métadonnées de réplica, métadonnées d'élément et objets utilisent un cache en mémoire des métadonnées pour ce réplica ou cet élément. Le cache est alimenté à partir du disque lorsque l'objet des métadonnées est initialisé et n'est plus actualisé après cela. Cela signifie que la représentation en mémoire sera différente de celle dans le fichier magasin des métadonnées dans certains cas, par exemple :

  • Lorsque les mises à jour ont été définies dans un objet des métadonnées et enregistrées en utilisant l'une des méthodes d'enregistrement, mais n'ont pas encore été écrites sur disque, par exemple lorsqu'une transaction explicite n'a pas été validée.

  • Lorsque plusieurs objets des métadonnées sont créés pour le même réplica ou élément et qu'une instance effectue et valide une mise à jour. Dans ce cas, l'objet qui n'a pas apporté la modification n'est pas actuel et les appels pour obtenir ses métadonnées retournent les valeurs d'avant la mise à jour.

Voir aussi

Référence

ReplicaMetadata

ItemMetadata

Autres ressources

Service de stockage des métadonnées de Sync Framework

Interface IReplicaMetadata

Interface IItemMetadata

Interface IFieldValue