Compartilhar via


Acessando metadados de réplica

O serviço de armazenamento de metadados armazena dois grupos de metadados: um que representa a réplica inteira e outro que representa os itens individuais que devem ser sincronizados. Ambos são manipulados usando ReplicaMetadata (para código gerenciado) ou IReplicaMetadata (para código não gerenciado).

Dica

  Uma alteração de propriedade não é salva no repositório de metadados simplesmente definindo-se uma propriedade nos metadados de réplica ou um objeto de metadados de item. As alterações de propriedade são salvas usando SaveReplicaMetadata ou SaveItemMetadata (para código gerenciado) ou IReplicaMetadata::SaveReplicaMetadata ou IReplicaMetadata::SaveItemMetadata (para código não gerenciado).

Metadados de réplica

Os metadados de réplica que são armazenados incluem a ID de réplica, a contagem em escala para a réplica, o conhecimento atual da réplica e o conhecimento esquecido da réplica. O repositório de metadados também fornece um campo de metadados personalizado que pode ser usado para armazenar metadados específicos do provedor que são associados à réplica. Esse campo pode ser definido usando a propriedade CustomReplicaMetadata (para código gerenciado) ou o método IReplicaMetadata::SetCustomFieldMetadata (para código não gerenciado).

Metadados de item

Os metadados de item contêm a ID global do item, a versão atual e a de criação, um valor que indica se o item foi excluído do repositório de itens, além de campos personalizados especificados quando os metadados de réplica foram inicializados. O objeto de metadados de réplica fornece métodos que podem ser usados para criar novos metadados de item, excluir metadados de item ou localizar metadados de item com base na ID global do item ou em um valor de campo personalizado.

Código gerenciado Os metadados de item são representados por um objeto ItemMetadata. Para procurar um item usando um valor de campo de índice, passe o nome e o valor do campo para FindItemMetadataByIndexedField.

Código não gerenciado Os metadados de item são representados por um objeto IItemMetadata. Para procurar um item usando um valor de campo de índice, crie um objeto IFieldValue vazio usando IReplicaMetadata::CreateEmptyFieldValue. Defina o valor para procurar no objeto IFieldValue e chame IReplicaMetadata::FindItemMetadataByIndexedFields.

Security noteSegurança Observação:

Para proteger dados de usuário, quando um item é marcado como excluído, todos os dados de usuário, como campos de índice personalizados, devem ser removidos dos metadados desse item. Quando um item é marcado como excluído, o serviço de armazenamento de metadados remove automaticamente todas as informações da unidade de alteração do item.

Cache

Os metadados de réplica e os metadados e objetos de item usam um cache na memória dos metadados para a réplica ou o item. O cache é preenchido do disco quando o objeto de metadados é inicializado e não é atualizado em nenhum momento depois disso. Isso significa que a representação na memória será diferente daquela no arquivo de repositório de metadados, em determinadas condições, como:

  • Quando as atualizações são definidas para um objeto de metadados e salvas usando um dos métodos de salvar, mas ainda não foram gravadas em disco, por exemplo, quando uma transação explícita não foi confirmada.

  • Quando mais de um objeto de metadados é criado para a mesma réplica ou item e uma instância faz e confirma uma atualização. Neste caso, o objeto que não fez a alteração não será atual e chamadas para obter seus metadados retornarão os valores de antes da atualização.

Consulte também

Referência

Interface IReplicaMetadata
Interface IItemMetadata
Interface IFieldValue
ReplicaMetadata
ItemMetadata

Outros recursos

Sync Framework Metadata Storage Service