Partilhar via


Método INotifyingChangeApplierTarget.TryGetDestinationVersion

Obtém a versão de um item armazenado na réplica de destino.

Namespace: Microsoft.Synchronization
Assembly: Microsoft.Synchronization (em microsoft.synchronization.dll)

Sintaxe

'Declaração
Function TryGetDestinationVersion ( _
    sourceChange As ItemChange, _
    <OutAttribute> ByRef destinationVersion As ItemChange _
) As Boolean
'Uso
Dim instance As INotifyingChangeApplierTarget
Dim sourceChange As ItemChange
Dim destinationVersion As ItemChange
Dim returnValue As Boolean

returnValue = instance.TryGetDestinationVersion(sourceChange, destinationVersion)
bool TryGetDestinationVersion (
    ItemChange sourceChange,
    out ItemChange destinationVersion
)
bool TryGetDestinationVersion (
    ItemChange^ sourceChange, 
    [OutAttribute] ItemChange^% destinationVersion
)
boolean TryGetDestinationVersion (
    ItemChange sourceChange, 
    /** @attribute OutAttribute() */ /** @ref */ ItemChange destinationVersion
)
JScript does not support passing value-type arguments by reference.

Parâmetros

  • sourceChange
    A alteração do item que é enviada pelo provedor de origem.
  • destinationVersion
    Retorna uma alteração de item que contém a versão do item na réplica de destino.

Valor de retorno

true se o item tiver sido encontrado na réplica de destino; caso contrário, false.

Comentários

Este método é chamado por NotifyingChangeApplier quando as versões de destino não são passadas para o método ApplyChanges. TryGetDestinationVersion é chamado uma vez para cada alteração do lote enviado para o aplicador de alterações.

Este método é opcional e pode lançar NotImplementedException, exceto quando o provedor relata conflitos de restrição ou qualquer outro provedor na comunidade de sincronização resolve conflitos de restrição por meio da mesclagem. Em qualquer um desses casos, este método deve ser implementado.

Exemplo

O exemplo a seguir mostra como obter as versões de destino das unidades de alteração contidas em um item usando o serviço de armazenamento de metadados.

Public Function TryGetDestinationVersion(ByVal sourceChange As ItemChange, ByRef destinationVersion As ItemChange) As Boolean Implements INotifyingChangeApplierTarget.TryGetDestinationVersion
    Dim found As Boolean = False
    ' Get the item metadata from the metadata store.
    Dim itemMeta As ItemMetadata = _ContactStore.ContactReplicaMetadata.FindItemMetadataById(sourceChange.ItemId)
    If itemMeta IsNot Nothing Then
        ' The item metadata exists, so translate the change unit metadata to the proper format and
        ' return the item change object.
        Dim cuChange As ChangeUnitChange
        Dim cuChanges As New List(Of ChangeUnitChange)()
        For Each cuMeta As ChangeUnitMetadata In itemMeta.GetChangeUnitEnumerator()
            cuChange = New ChangeUnitChange(IdFormats, cuMeta.ChangeUnitId, cuMeta.ChangeUnitVersion)
            cuChanges.Add(cuChange)
        Next
        destinationVersion = New ItemChange(IdFormats, _ContactStore.ContactReplicaMetadata.ReplicaId, sourceChange.ItemId, ChangeKind.Update, itemMeta.CreationVersion, cuChanges)

        found = True
    Else
        destinationVersion = Nothing
    End If
    Return found
End Function
public bool TryGetDestinationVersion(ItemChange sourceChange, out ItemChange destinationVersion)
{
    bool found = false;
    // Get the item metadata from the metadata store.
    ItemMetadata itemMeta = _ContactStore.ContactReplicaMetadata.FindItemMetadataById(sourceChange.ItemId);
    if (null != itemMeta)
    {
        // The item metadata exists, so translate the change unit metadata to the proper format and
        // return the item change object.
        ChangeUnitChange cuChange;
        List<ChangeUnitChange> cuChanges = new List<ChangeUnitChange>();
        foreach (ChangeUnitMetadata cuMeta in itemMeta.GetChangeUnitEnumerator())
        {
            cuChange = new ChangeUnitChange(IdFormats, cuMeta.ChangeUnitId, cuMeta.ChangeUnitVersion);
            cuChanges.Add(cuChange);
        }
        destinationVersion = new ItemChange(IdFormats, _ContactStore.ContactReplicaMetadata.ReplicaId, sourceChange.ItemId,
            ChangeKind.Update, itemMeta.CreationVersion, cuChanges);

        found = true;
    }
    else
    {
        destinationVersion = null;
    }
    return found;
}

Consulte também

Referência

Interface INotifyingChangeApplierTarget
Membros INotifyingChangeApplierTarget
Namespace Microsoft.Synchronization