Compartilhar via


Enumeração ConstraintConflictReason

Representa os motivos pelos quais pode ocorrer um conflito de restrição.

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

Sintaxe

'Declaração
Public Enumeration ConstraintConflictReason
'Uso
Dim instance As ConstraintConflictReason
public enum ConstraintConflictReason
public enum class ConstraintConflictReason
public enum ConstraintConflictReason
public enum ConstraintConflictReason

Membros

  Nome do membro Descrição
Collision O item não pode ser salvo porque está em conflito com outro item no repositório. Por exemplo, um item com o mesmo nome de um item existente. O provedor deve especificar a ID do item de destino como a ID do item em conflito. 
Identity A réplica de origem e a réplica de destino discordam sobre a identidade de um item. Por exemplo, a réplica X resolve um conflito de colisão entre itens com as IDs id1 e id2 mesclando os itens e atribuindo id1 ao item mesclado. A réplica Y resolve um conflito de colisão entre itens com as IDs id1 e id2 renomeando o item identificado por id1 e mantendo ambos os itens. A réplica X envia o item mesclado identificado por id1 e uma marca de exclusão de mesclagem que indica que id2 foi mesclado em id1. O conflito em id1 é detectado e resolvido como um conflito de simultaneidade. O conflito em id2 é detectado e relatado para o aplicativo de sincronização como um conflito de identidade, especificando o motivo do conflito como Identity. O aplicativo determina se o conflito deve ser resolvido com a manutenção da alteração de origem ou da alteração de destino.  
NoParent O item não pode ser salvo no repositório de dados hierárquico porque requer um item pai que não existe no repositório. O provedor pode, opcionalmente, especificar a ID do pai ausente como a ID do item em conflito. 
Other O item ou a unidade de alteração viola alguma outra restrição da réplica de destino. O provedor pode, opcionalmente, especificar a ID do item em conflito como a ID do item em conflito. 

Comentários

O provedor de destino usa um membro de ConstraintConflictReason para especificar o motivo de um conflito de restrição ao relatar um conflito de restrição para aplicador de alterações. Para obter mais informações sobre conflitos de restrição, consulte Detectando e solucionando conflitos de restrição.

Exemplo

O exemplo a seguir detecta se um item recém-criado causa um conflito de restrição e, em caso positivo, retorna o motivo do conflito de restrição apropriado.

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

Consulte também

Referência

Namespace Microsoft.Synchronization