Share via


Enumerazione ConstraintConflictResolutionAction

Rappresenta le azioni intraprese per risolvere un conflitto di vincoli specifico.

Spazio dei nomi: Microsoft.Synchronization
Assembly: Microsoft.Synchronization (in microsoft.synchronization.dll)

Sintassi

'Dichiarazione
Public Enumeration ConstraintConflictResolutionAction
'Utilizzo
Dim instance As ConstraintConflictResolutionAction
public enum ConstraintConflictResolutionAction
public enum class ConstraintConflictResolutionAction
public enum ConstraintConflictResolutionAction
public enum ConstraintConflictResolutionAction

Membri

  Nome membro Descrizione
DestinationWins La modifica apportata alla replica di destinazione prevale sempre. L'oggetto di applicazione modifiche passa la modifica di origine al metodo SaveItemChange e specifica un'azione di salvataggio di DeleteAndStoreTombstone. Il provider di destinazione crea una rimozione definitiva per la modifica di origine. Quando la destinazione agisce come origine in una sincronizzazione successiva, enumera una modifica che rappresenta l'eliminazione dell'elemento di origine e lo rimuove dalla community di sincronizzazione. 
Merge I dati dell'elemento di origine vengono combinati con l'elemento di destinazione. L'oggetto di applicazione modifiche passa i dati di modifica della replica di origine al metodo SaveItemChange e specifica un'azione di salvataggio di ChangeIdUpdateVersionAndMergeData. Per informazioni dettagliate, vedere la sezione Unione di elementi in conflitto di Rilevamento e risoluzione dei conflitti di vincoli
RenameDestination L'elemento in conflitto nella replica di destinazione viene ridenominato in modo da non generare più conflitti con la modifica inviata dal provider di origine e la modifica di origine viene applicata alla replica di destinazione. L'oggetto di applicazione modifiche passa la modifica al metodo SaveItemChange e specifica un'azione di salvataggio di RenameDestinationAndUpdateVersionData
RenameSource La modifica inviata dal provider di origine viene ridenominata in modo da non entrare più in conflitto con l'elemento in conflitto nella replica di destinazione e la modifica di origine viene applicata alla replica di destinazione. L'oggetto di applicazione modifiche passa la modifica al metodo SaveItemChange e specifica un'azione di salvataggio di RenameSourceAndUpdateVersionAndData
SaveConflict Registrare il conflitto e non applicare la modifica. L'oggetto di applicazione modifiche passa i dati relativi al conflitto al metodo SaveConstraintConflict che salva il conflitto in un log. Per ulteriori informazioni sulla registrazione dei conflitti, vedere Registrazione e gestione di conflitti
SkipChange Ignorare il conflitto e non applicare la modifica. L'oggetto di applicazione modifiche non passa i dati relativi al conflitto al provider di destinazione. 
SourceWins La modifica apportata alla replica di origine prevale sempre. L'oggetto di applicazione modifiche passa la modifica al metodo SaveItemChange e specifica un'azione di salvataggio di DeleteConflictingAndSaveSourceItem. La modifica di origine viene applicata alla replica di destinazione e l'elemento di destinazione in conflitto viene eliminato dalla replica di destinazione. 

Osservazioni

I membri di ConstraintConflictResolutionAction specificano l'azione che l'oggetto di applicazione modifiche intraprende per risolvere i conflitti di vincoli. I conflitti di vincoli violano i vincoli imposti su elementi o unità di modifica, ad esempio la relazione di cartelle o il percorso di dati con la stessa denominazione all'interno di un file system. Quando vengono specificati criteri di risoluzione dei conflitti di collisione, l'azione di risoluzione dei conflitti di vincoli viene specificata dall'oggetto di applicazione modifiche quando si verifica un conflitto di vincoli di collisione. In caso contrario, l'azione di risoluzione dei conflitti di vincoli viene specificata dall'applicazione di sincronizzazione quando riceve una notifica relativa al fatto che si sia verificato un conflitto di vincoli.

Per ulteriori informazioni sui conflitti di vincoli, vedere Rilevamento e risoluzione dei conflitti di vincoli.

Esempio

Nell'esempio seguente viene implementato un gestore per l'evento ItemConstraint. Il gestore consente all'utente di visualizzare gli elementi in conflitto e imposta l'azione di risoluzione dei conflitti di vincoli sulla base della risposta dell'utente.

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

Vedere anche

Riferimento

Spazio dei nomi Microsoft.Synchronization