Compartilhar via


Enumeração ConstraintConflictResolutionAction

Representa ações que são executadas para resolver um conflito de restrição específico.

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

Sintaxe

'Declaração
Public Enumeration ConstraintConflictResolutionAction
'Uso
Dim instance As ConstraintConflictResolutionAction
public enum ConstraintConflictResolutionAction
public enum class ConstraintConflictResolutionAction
public enum ConstraintConflictResolutionAction
public enum ConstraintConflictResolutionAction

Membros

  Nome do membro Descrição
DestinationWins A alteração feita na réplica de destino sempre vence. O aplicador de alterações passa a alteração de origem para o método SaveItemChange e especifica uma ação de salvamento DeleteAndStoreTombstone. O provedor de destino cria uma marca de exclusão para a alteração de origem. Quando o destino agir como a origem em uma sincronização posterior, ele irá enumerar uma alteração que represente a exclusão do item de origem, removendo-o assim da comunidade de sincronização. 
Merge Os dados do item de origem são combinados com o item de destino. O aplicador de alterações passa os dados de alteração da réplica de origem para o método SaveItemChange e especifica uma ação de salvamento ChangeIdUpdateVersionAndMergeData. Para obter detalhes, consulte a seção Mesclando itens conflitantes do tópico Detectando e solucionando conflitos de restrição
RenameDestination O item conflitante na réplica de destino é renomeado para não colidir mais com a alteração enviada a partir do provedor de origem, e a alteração de origem é aplicada à réplica de destino. O aplicador de alterações passa a alteração para o método SaveItemChange e especifica uma ação de salvamento RenameDestinationAndUpdateVersionData
RenameSource A alteração enviada a partir do provedor de origem é renomeada para não colidir mais com o item conflitante na réplica de destino, e a alteração de origem é aplicada à réplica de destino. O aplicador de alterações passa a alteração para o método SaveItemChange e especifica uma ação de salvamento RenameSourceAndUpdateVersionAndData
SaveConflict Registre o conflito em log e não aplique a alteração. O aplicador de alterações passa os dados do conflito para o método SaveConstraintConflict, o qual salva o conflito em um log de conflitos. Para obter mais informações sobre como registrar os conflitos em log, consulte Registrando em log e gerenciando conflitos
SkipChange Ignore o conflito e não aplique a alteração. O aplicador de alterações não passa os dados do conflito para o provedor de destino. 
SourceWins A alteração feita na réplica de origem sempre vence. O aplicador de alterações passa a alteração para o método SaveItemChange e especifica uma ação de salvamento DeleteConflictingAndSaveSourceItem. A alteração de origem é aplicada à réplica de destino e o item de destino conflitante é excluído da réplica de destino. 

Comentários

Os membros de ConstraintConflictResolutionAction especificam a ação executada pelo aplicador de alterações para resolver conflitos de restrição. Esses conflitos são aqueles que violam as restrições dos itens ou das unidades de alteração, como a relação de pastas ou o local dos dados nomeados de forma idêntica em um sistema de arquivos. Quando uma política de resolução de conflitos de colisão é especificada, a ação de resolução de conflitos de restrição é especificada pelo aplicador de alterações quando ocorre um conflito de restrição de colisão. Caso contrário, a ação de resolução de conflito de restrição é especificada pelo aplicativo de sincronização quando ele é notificado da ocorrência desse conflito.

Para obter mais informações sobre conflitos de restrição, consulte Detectando e solucionando conflitos de restrição.

Exemplo

O exemplo a seguir implementa um manipulador para o evento ItemConstraint. O manipulador exibe os itens conflitantes para o usuário e define a ação de resolução de conflito de restrição com base na resposta do usuário.

Private Sub HandleItemConstraint(ByVal sender As [Object], ByVal args As ItemConstraintEventArgs)
    If ConstraintConflictReason.Collision = args.ConstraintConflictReason Then
        ' Display the two items that are in conflict and solicit a resolution from the user.
        Dim srcContact As New Contact(DirectCast(args.SourceChangeData, String()))
        Dim destContact As New Contact(DirectCast(args.DestinationChangeData, String()))
        Dim msg As String = ("Source change is " & srcContact.ToString() & vbLf & "Destination change is ") & destContact.ToString() & vbLf & "Click Yes to rename the source change and apply it." & vbLf & "Click No to rename the destination item and apply the source change." & vbLf & "Click Cancel to delete the destination item and apply the source change."
        Dim ccDlg As New ConstraintConflictDlg(msg)
        ccDlg.ShowDialog()

        ' Set the resolution action based on the user's response.
        args.SetResolutionAction(ccDlg.Resolution)
    Else
        args.SetResolutionAction(ConstraintConflictResolutionAction.SaveConflict)
    End If
End Sub
void HandleItemConstraint(Object sender, ItemConstraintEventArgs args)
{
    if (ConstraintConflictReason.Collision == args.ConstraintConflictReason)
    {
        // Display the two items that are in conflict and solicit a resolution from the user.
        Contact srcContact = new Contact((string[])args.SourceChangeData);
        Contact destContact = new Contact((string[])args.DestinationChangeData);
        string msg = "Source change is " + srcContact.ToString() +
                   "\nDestination change is " + destContact.ToString() +
                   "\nClick Yes to rename the source change and apply it." +
                   "\nClick No to rename the destination item and apply the source change." +
                   "\nClick Cancel to delete the destination item and apply the source change.";
        ConstraintConflictDlg ccDlg = new ConstraintConflictDlg(msg);
        ccDlg.ShowDialog();

        // Set the resolution action based on the user's response.
        args.SetResolutionAction(ccDlg.Resolution);
    }
    else 
    {
        args.SetResolutionAction(ConstraintConflictResolutionAction.SaveConflict);
    }
}

Consulte também

Referência

Namespace Microsoft.Synchronization