Freigeben über


ConstraintConflictReason-Enumeration

Stellt den Grund für das Auftreten eines Einschränkungskonflikts dar.

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

Syntax

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

Member

  Membername Beschreibung
Collision Das Element kann nicht gespeichert werden, da ein Konflikt mit einem anderen Element im Speicher auftritt, z. B. mit einem Element, das den gleichen Namen wie ein vorhandenes Element aufweist. Der Anbieter muss die ID des Zielelements als die ID des Konflikt verursachenden Elements angeben. 
Identity Das Quellreplikat und das Zielreplikat stimmen in der Identität eines Elements nicht überein. So löst Replikat X beispielsweise einen Kollisionskonflikt zwischen Elementen mit den IDs id1 und id2 auf, indem die Elemente zusammengeführt und dem zusammengeführten Element id1 zugewiesen werden. Replikat Y löst einen Kollisionskonflikt zwischen Elementen mit den IDs id1 und id2 auf, indem das als id1 erkannte Element umbenannt und beide Elemente beibehalten werden. Replikat X sendet das als id1 erkannte zusammengeführte Element und einen Mergetombstone, der angibt, dass id2 mit id1 zusammengeführt wurde. Der Konflikt für id1 wird erkannt und als Parallelitätskonflikt aufgelöst. Der Konflikt für id2 wird erkannt und der Synchronisierungsanwendung als Identitätskonflikt gemeldet, indem die Konfliktursache als Identity angegeben wird. Die Anwendung bestimmt, ob der Konflikt durch das Beibehalten der Quell- oder der Zieländerung aufgelöst werden soll.  
NoParent Das Element kann nicht im hierarchischen Datenspeicher gespeichert werden, da es ein übergeordnetes Element erfordert, das im Speicher nicht vorhanden ist. Der Anbieter kann die ID des fehlenden übergeordneten Elements optional als ID des Konflikt verursachenden Elements angeben. 
Other Das Element oder die Änderungseinheit verstößt gegen eine andere Einschränkung des Zielreplikats. Der Anbieter kann die ID des Konflikt verursachenden Elements optional als ID des Konflikt verursachenden Elements angeben. 

Hinweise

Der Zielanbieter verwendet einen Member von ConstraintConflictReason, um die Ursache für einen Einschränkungskonflikt anzugeben, wenn er einen Einschränkungskonflikt an den Änderungsanwender meldet. Weitere Informationen zu Einschränkungskonflikten finden Sie unter Erkennen und Auflösen von Einschränkungskonflikten.

Beispiel

Das folgende Beispiel erkennt, ob ein neu erstelltes Element einen Einschränkungskonflikt verursacht. Wenn dies der Fall ist, gibt es die entsprechende Einschränkungskonfliktursache zurück.

Public Function CanCreateContact(ByVal itemChange As ItemChange, ByVal changeData As String(), ByRef reason As ConstraintConflictReason, ByRef conflictingItemId As SyncId) As Boolean
    Dim canCreate As Boolean = True

    ' Create a temporary contact and see if its index values conflict with any item already in the contact store.
    Dim newContact As New Contact(changeData)
    canCreate = Not DetectIndexCollision(newContact, conflictingItemId)
    If Not canCreate Then
        ' An index collision occurred, so report a collision conflict.
        reason = ConstraintConflictReason.Collision
    Else
        ' This value won't be used because canCreate is set to true in this case.
        reason = ConstraintConflictReason.Other
    End If

    Return canCreate
End Function
public bool CanCreateContact(ItemChange itemChange, string[] changeData, out ConstraintConflictReason reason, out SyncId conflictingItemId)
{
    bool canCreate = true;

    // Create a temporary contact and see if its index values conflict with any item already in the contact store.
    Contact newContact = new Contact(changeData);
    canCreate = !DetectIndexCollision(newContact, out conflictingItemId);
    if (!canCreate)
    {
        // An index collision occurred, so report a collision conflict.
        reason = ConstraintConflictReason.Collision;
    }
    else
    {
        // This value won't be used because canCreate is set to true in this case.
        reason = ConstraintConflictReason.Other;
    }

    return canCreate;
}

Siehe auch

Verweis

Microsoft.Synchronization-Namespace