Condividi tramite


Enumerazione ConstraintConflictReason

Rappresenta i motivi per cui si può verificare un conflitto di vincoli.

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

Sintassi

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

Membri

  Nome membro Descrizione
Collision Questo elemento non può essere salvato perché è in conflitto con un altro elemento presente nell'archivio, ad esempio un elemento avente lo stesso nome di un elemento esistente. Il provider deve specificare l'ID dell'elemento di destinazione come ID elemento in conflitto. 
Identity La replica di origine e quella di destinazione non concordano sull'identità di un elemento. Ad esempio, la replica X risolve un conflitto di collisione tra elementi con ID id1 e id2 unendo gli elementi e assegnando id1 all'elemento unito. La replica Y risolve un conflitto di collisione tra elementi con ID id1 e id2 ridenominando l'elemento identificato da id1 e mantenendo entrambi gli elementi. La replica X invia l'elemento unito identificato da id1 e una rimozione definitiva tramite unione che indica che id2 è stato unito a id1. Il conflitto su id1 viene rilevato e risolto come un conflitto di concorrenza. Il conflitto su id2 viene rilevato e segnalato all'applicazione di sincronizzazione come conflitto di identità specificando un motivo del conflitto di Identity. L'applicazione determina se risolvere il conflitto mantenendo la modifica di origine o la modifica di destinazione.  
NoParent L'elemento non può essere salvato nell'archivio dati gerarchico perché richiede un elemento padre che non esiste nell'archivio. Facoltativamente, il provider può specificare l'ID dell'elemento padre mancante come ID elemento in conflitto. 
Other L'elemento o l'unità di modifica viola altri vincoli della replica di destinazione. Facoltativamente, il provider può specificare l'ID dell'elemento in conflitto come l'ID elemento in conflitto. 

Osservazioni

Il provider di destinazione utilizza un membro di ConstraintConflictReason per specificare il motivo di un conflitto di vincoli quando segnala un conflitto di vincoli all'oggetto di applicazione modifiche. Per ulteriori informazioni sui conflitti di vincoli, vedere Rilevamento e risoluzione dei conflitti di vincoli.

Esempio

Nell'esempio seguente si rileva se un elemento appena creato causa un conflitto di vincoli e in tal caso viene restituito il motivo del conflitto di vincoli appropriato.

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

Vedere anche

Riferimento

Spazio dei nomi Microsoft.Synchronization