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