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


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

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

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

Синтаксис

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

Элементы

Имя элемента Описание
SkipChange Конфликт не обрабатывается, и изменение не применяется. Объект применения изменений не передает данные о конфликте поставщику назначения.
DestinationWins Изменение, сделанное в реплике назначения, всегда выигрывает. Объект применения изменений передает изменение источника методу SaveItemChange и указывает действие сохранения DeleteAndStoreTombstone. Поставщик назначения создает отметку полного удаления для изменения источника. Если назначение в ходе дальнейшей синхронизации выступает в качестве источника, то в нем будет перечислено изменение, представляющее удаление элемента источника, вследствие чего произойдет его удаление из сообщества синхронизации.
SourceWins Изменение, сделанное в реплике источника, всегда побеждает. Объект применения изменений передает изменение методу SaveItemChange и указывает действие сохранения DeleteConflictingAndSaveSourceItem. Исходное изменение применяется к реплике назначения, а конфликтующий элемент назначения удаляется из реплики назначения.
SaveConflict Конфликт записывается в журнал, и изменение не применяется. Объект применения изменений передает данные о конфликте методу SaveConstraintConflict, который сохраняет конфликт в журнале конфликтов. Дополнительные сведения о ведении журнала конфликтов см. в разделе Ведение журнала конфликтов и управление конфликтами.
Merge Данные из исходного элемента объединяются с элементом назначения. Объект применения изменений передает информацию об изменениях реплики источника методу SaveItemChange и указывает действие сохранения ChangeIdUpdateVersionAndMergeData. Дополнительные сведения см. в разделе Слияние конфликтующих элементов документаОбнаружение и разрешение конфликтов ограничений.
RenameSource Изменение, отправленное поставщиком источника, переименовывается, чтобы устранить конфликт с элементом реплики назначения, а изменение источника применяется на реплике назначения. Объект применения изменений передает изменение методу SaveItemChange и указывает действие сохранения RenameSourceAndUpdateVersionAndData.
RenameDestination Конфликтующий элемент в реплике назначения переименовывается так, чтобы не вызывать конфликт с изменением, отправленным поставщиком источника, и исходное изменение применяется в реплике назначения. Объект применения изменений передает изменение методу SaveItemChange и указывает действие сохранения RenameDestinationAndUpdateVersionData.

Замечания

Элемент ConstraintConflictResolutionAction указывает действие, выполняемое объектом применения изменений для разрешения конфликтов ограничений. Конфликты ограничений представляют собой конфликты, которые нарушают ограничения, наложенные на элементы или базовые единицы, такие как связь папок или расположение данных с идентичными именами в пределах файловой системы. Если указана политика устранения конфликтов совпадения, то действие по устранению конфликта ограничения определяется объектом применения изменений при возникновении конфликта совпадения ограничения. В противном случае действие по устранению конфликтов ограничения определяется приложением синхронизации при получении им извещения о возникновении конфликта ограничения.

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

Примеры

В следующем примере реализуется обработчик для события ItemConstraint. Обработчик отображает для пользователя конфликтующие элементы и задает действие по устранению конфликтов ограничений в зависимости от ответа пользователя.

Private Sub HandleItemConstraint(ByVal sender As [Object], ByVal args As ItemConstraintEventArgs)
    If ConstraintConflictReason.Collision = args.ConstraintConflictReason Then
        ' Display the two items that are in conflict and solicit a resolution from the user.
        Dim srcContact As New Contact(DirectCast(args.SourceChangeData, String()))
        Dim destContact As New Contact(DirectCast(args.DestinationChangeData, String()))
        Dim msg As String = ("Source change is " & srcContact.ToString() & vbLf & "Destination change is ") & destContact.ToString() & vbLf & "Click Yes to rename the source change and apply it." & vbLf & "Click No to rename the destination item and apply the source change." & vbLf & "Click Cancel to delete the destination item and apply the source change."
        Dim ccDlg As New ConstraintConflictDlg(msg)
        ccDlg.ShowDialog()

        ' Set the resolution action based on the user's response.
        args.SetResolutionAction(ccDlg.Resolution)
    Else
        args.SetResolutionAction(ConstraintConflictResolutionAction.SaveConflict)
    End If
End Sub
void HandleItemConstraint(Object sender, ItemConstraintEventArgs args)
{
    if (ConstraintConflictReason.Collision == args.ConstraintConflictReason)
    {
        // Display the two items that are in conflict and solicit a resolution from the user.
        Contact srcContact = new Contact((string[])args.SourceChangeData);
        Contact destContact = new Contact((string[])args.DestinationChangeData);
        string msg = "Source change is " + srcContact.ToString() +
                   "\nDestination change is " + destContact.ToString() +
                   "\nClick Yes to rename the source change and apply it." +
                   "\nClick No to rename the destination item and apply the source change." +
                   "\nClick Cancel to delete the destination item and apply the source change.";
        ConstraintConflictDlg ccDlg = new ConstraintConflictDlg(msg);
        ccDlg.ShowDialog();

        // Set the resolution action based on the user's response.
        args.SetResolutionAction(ccDlg.Resolution);
    }
    else 
    {
        args.SetResolutionAction(ConstraintConflictResolutionAction.SaveConflict);
    }
}

См. также

Справочник

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