Поделиться через


Перечисление ConstraintConflictReason

Представляет причины, по которым может произойти конфликт ограничения.

Пространство имен: Microsoft.Synchronization
Сборка: Microsoft.Synchronization (в microsoft.synchronization.dll)

Синтаксис

'Декларация
Public Enumeration ConstraintConflictReason
'Применение
Dim instance As ConstraintConflictReason
public enum ConstraintConflictReason
public enum class ConstraintConflictReason
public enum ConstraintConflictReason
public enum ConstraintConflictReason

Элементы

  Имя члена Описание
Collision Этот элемент не может быть сохранен, поскольку конфликтует с другим элементом в хранилище, например, имеющим то же имя. Поставщик должен указать идентификатор элемента назначения в качестве идентификатора конфликтующего элемента. 
Identity В реплике источника и реплике назначения не совпадает идентификатор элемента. Например, реплика X разрешает конфликт совпадения между элементами с идентификаторами id1 и id2 путем объединения элементов и присваивания идентификатора id1 объединенному элементу. Реплика Y разрешает конфликт совпадения между элементами с идентификаторами id1 и id2 путем переименования элемента с идентификатором id1, и сохранения обоих элементов. Реплика X передает объединенный элемент с идентификатором id1, и отметку полного удаления слиянием, которая указывает, что произошло слияние элемента id2 с элементом id1. Конфликт с элементом id1, обнаруживается и разрешается как конфликт параллелизма. Конфликт в отношении элемента id2 обнаруживается, и сообщение о нем как о конфликте идентификаторов поступает в приложение синхронизации в виде указания причины конфликта Identity. Приложение определяет, следует ли разрешить конфликт путем сохранения изменения в источнике или в назначении.  
NoParent Этот элемент не может быть сохранен в хранилище иерархических данных, поскольку для него требуется родительский элемент, не существующий в хранилище. Поставщик может дополнительно указать идентификатор недостающего родительского элемента в качестве идентификатора конфликтующего элемента. 
Other Элемент или базовая единица нарушает какое-либо другое ограничение реплики назначения. Поставщик может дополнительно указать идентификатор конфликтующего элемента, обозначив его как идентификатор конфликтующего элемента. 

Замечания

В поставщике назначения используется элемент ConstraintConflictReason, чтобы указать причины конфликта ограничения, если он сообщает о конфликте ограничения объекту применения изменений. Дополнительные сведения о конфликтах ограничений см. в разделе Обнаружение и разрешение конфликтов ограничений.

Пример

Следующий пример определяет, вызовет ли вновь созданный элемент конфликт ограничения (в этом случае возвращает соответствующую причину конфликта ограничения).

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

См. также

Справочник

Пространство имен Microsoft.Synchronization