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);
}
}