Compartir a través de


Acceso a los metadatos de una réplica

Metadata Storage Service almacena dos grupos de metadatos: uno que representa a la réplica completa y otro que representa a los elementos individuales que se van a sincronizar. Ambos se tratan utilizando ReplicaMetadata (en el código administrado) o IReplicaMetadata (en el código no administrado).

Nota

  Para guardar un cambio de propiedad en el almacén de metadatos, no basta con establecer una propiedad en el objeto de los metadatos del elemento o de los metadatos de la réplica. Los cambios de propiedad se guardan usando SaveReplicaMetadata o SaveItemMetadata (en el código administrado) o IReplicaMetadata::SaveReplicaMetadata o IReplicaMetadata::SaveItemMetadata (en el código no administrado).

Metadatos de la réplica

Los metadatos de la réplica que se almacenan incluyen el identificador, el contador, el conocimiento actual y el conocimiento olvidado de la réplica. El almacén de metadatos también proporciona un campo de metadatos personalizado que se puede utilizar para almacenar cualquier metadato específico del proveedor que esté asociado a la réplica. Este campo se puede establecer usando la propiedad CustomReplicaMetadata (en el código administrado) o el método IReplicaMetadata::SetCustomFieldMetadata (en el código no administrado).

Metadatos de un elemento

Los metadatos de un elemento contienen el identificador global del elemento, la versión actual y la versión de creación, un valor que indica si el elemento se ha eliminado del almacén de elementos y los campos personalizados especificados cuando se inicializaron los metadatos de la réplica. El objeto de metadatos de la réplica proporciona métodos que se pueden utilizar para crear nuevos metadatos del elemento, eliminar o buscar metadatos del elemento según el identificador global del elemento o un valor de campo personalizado.

Código administrado: los metadatos de un elemento se representan mediante un objeto ItemMetadata. Para buscar un elemento utilizando un valor de campo de índice, pase el nombre de campo y el valor a FindItemMetadataByIndexedField.

Código no administrado: los metadatos de un elemento se representan mediante un objeto IItemMetadata. Para buscar un elemento utilizando un valor de campo de índice, cree un objeto IFieldValue vacío mediante IReplicaMetadata::CreateEmptyFieldValue. Establezca el valor que buscar en el objeto IFieldValue y llame al método IReplicaMetadata::FindItemMetadataByIndexedFields.

Security noteSeguridad Nota

Para proteger los datos del usuario, cuando un elemento se marca como eliminado, todos los datos del usuario, como los campos de índice personalizados, se deben quitar de los metadatos para ese elemento. Cuando un elemento se marca como eliminado, Metadata Storage Service quita automáticamente toda la información de la unidad de cambio para el elemento.

Almacenamiento en memoria caché

Los metadatos de la réplica y los metadatos y objetos del elemento usan una caché en memoria de los metadatos para esa réplica o elemento. La memoria caché se rellena desde el disco cuando se inicializa el objeto de metadatos y no se actualiza en ningún momento después. Esto significa que la representación en memoria será diferente de la del archivo de almacén de metadatos en ciertas condiciones, por ejemplo:

  • Cuando las actualizaciones se han establecido en un objeto de metadatos y se han guardado utilizando uno de los métodos para guardar pero aún no se han escrito en el disco, por ejemplo cuando una transacción explícita no se ha confirmado.

  • Cuando se crea más de un objeto de metadatos para la misma réplica o elemento, y una instancia efectúa y confirma una actualización. En este caso, el objeto que no realizó el cambió no será el actual y las llamadas para obtener sus metadatos devolverán los valores anteriores a la actualización.

Vea también

Referencia

Interfaz IReplicaMetadata
Interfaz IItemMetadata
Interfaz IFieldValue
ReplicaMetadata
ItemMetadata

Otros recursos

Sync Framework Metadata Storage Service