Freigeben über


ConstraintConflictResolutionAction-Enumeration

Stellt Aktionen dar, die ausgeführt werden, um einen bestimmten Einschränkungskonflikt aufzulösen.

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

Syntax

'Declaration
Public Enumeration ConstraintConflictResolutionAction
'Usage
Dim instance As ConstraintConflictResolutionAction
public enum ConstraintConflictResolutionAction
public enum class ConstraintConflictResolutionAction
public enum ConstraintConflictResolutionAction
public enum ConstraintConflictResolutionAction

Member

  Membername Beschreibung
DestinationWins Die auf dem Zielreplikat vorgenommene Änderung hat stets Vorrang. Der Änderungsanwender übergibt die Quelländerung an die SaveItemChange-Methode und legt die Speicheraktion DeleteAndStoreTombstone fest. Der Zielanbieter erstellt einen Tombstone für die Quelländerung. Wenn das Ziel bei einer späteren Synchronisierung als Quelle dient, wird eine Änderung aufgelistet, die dem Löschen des Quellelements entspricht, um dieses aus der Synchronisierungscommunity zu entfernen. 
Merge Die Daten des Quellelements werden mit dem Zielelement kombiniert. Der Änderungsanwender übergibt die Änderungsdaten des Quellreplikats an die SaveItemChange-Methode und legt die Speicheraktion ChangeIdUpdateVersionAndMergeData fest. Ausführliche Informationen finden Sie im Abschnitt Zusammenführen von Konflikt verursachenden Elementen von Erkennen und Auflösen von Einschränkungskonflikten
RenameDestination Das Konflikt verursachende Element auf dem Zielreplikat wird umbenannt, damit es nicht mehr auf die vom Quellenanbieter gesendete Änderung trifft. Außerdem wird die Quelländerung für das Zielreplikat übernommen. Der Änderungsanwender übergibt die Änderung an die SaveItemChange-Methode und legt die Speicheraktion RenameDestinationAndUpdateVersionData fest. 
RenameSource Die vom Quellenanbieter gesendete Änderung wird umbenannt, damit diese auf dem Zielreplikat nicht mehr auf das Konflikt verursachende Element trifft. Außerdem wird die Quelländerung für das Zielreplikat übernommen. Der Änderungsanwender übergibt die Änderung an die SaveItemChange-Methode und legt die Speicheraktion RenameSourceAndUpdateVersionAndData fest. 
SaveConflict Der Konflikt wird protokolliert, und die Änderung wird nicht übernommen. Der Änderungsanwender übergibt die Konfliktdaten an die SaveConstraintConflict-Methode, die den Konflikt in einem Konfliktprotokoll speichert. Weitere Informationen zur Protokollierung von Konflikten finden Sie unter Protokollieren und Verwalten von Konflikten
SkipChange Der Konflikt wird ignoriert, und die Änderung wird nicht übernommen. Der Änderungsanwender übergibt die Konfliktdaten nicht an den Zielanbieter. 
SourceWins Die am Quellreplikat vorgenommene Änderung hat stets Vorrang. Der Änderungsanwender übergibt die Änderung an die SaveItemChange-Methode und legt die Speicheraktion DeleteConflictingAndSaveSourceItem fest. Die Quelländerung wird für das Zielreplikat übernommen, und das Konflikt verursachende Zielreplikat wird vom Zielreplikat gelöscht. 

Hinweise

Die Member von ConstraintConflictResolutionAction geben die Aktion an, mit der der Änderungsanwender einen Einschränkungskonflikt auflöst. Einschränkungskonflikte sind Konflikte, bei denen Einschränkungen (z. B. die Beziehung zwischen Ordnern oder der Speicherort identisch benannter Daten innerhalb eines Dateisystems) verletzt werden, die Elementen oder Änderungseinheiten auferlegt wurden. Wenn eine Richtlinie zur Kollisionskonfliktauflösung festgelegt wurde, wird die Aktion zur Einschränkungskonfliktauflösung bei Auftreten eines Kollisionseinschränkungskonflikt vom Änderungsanwender angegeben. Andernfalls wird die Aktion zur Einschränkungskonfliktauflösung von der Synchronisierungsanwendung festgelegt, wenn diese vom Auftreten eines Einschränkungskonflikts benachrichtigt wird.

Weitere Informationen zu Einschränkungskonflikten finden Sie unter Erkennen und Auflösen von Einschränkungskonflikten.

Beispiel

Im folgenden Beispiel wird ein Handler für das ItemConstraint-Ereignis implementiert. Der Handler zeigt dem Benutzer die Konflikt verursachenden Elemente an und legt die Einschränkungs-Konfliktauflösungsaktion auf Grundlage der Antwort des Benutzers fest.

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

Siehe auch

Verweis

Microsoft.Synchronization-Namespace