다음을 통해 공유


ConstraintConflictResolutionAction 열거형

특정 제약 조건 충돌을 해결하기 위해 수행되는 동작을 나타냅니다.

네임스페이스: Microsoft.Synchronization
어셈블리: microsoft.synchronization.dll의 Microsoft.Synchronization

구문

‘선언
Public Enumeration ConstraintConflictResolutionAction
‘사용 방법
Dim instance As ConstraintConflictResolutionAction
public enum ConstraintConflictResolutionAction
public enum class ConstraintConflictResolutionAction
public enum ConstraintConflictResolutionAction
public enum ConstraintConflictResolutionAction

멤버

  멤버 이름 설명
DestinationWins 대상 복제본의 변경 내용이 항상 우선 적용됩니다. 변경 내용 적용자는 원본 변경 내용을 SaveItemChange 메서드에 전달하고 저장 동작을 DeleteAndStoreTombstone으로 지정합니다. 그러면 대상 공급자가 원본 변경 내용에 대한 삭제 표식을 만듭니다. 나중에 동기화 작업에서 대상이 원본 역할을 할 경우 원본 항목 삭제를 나타내는 변경 내용을 열거하고 동기화 커뮤니티에서 이를 제거합니다. 
Merge 원본 항목의 데이터가 대상 항목과 결합됩니다. 변경 내용 적용자는 원본 복제본의 변경 내용 데이터를 SaveItemChange 메서드에 전달하고 저장 동작을 ChangeIdUpdateVersionAndMergeData로 지정합니다. 자세한 내용은 제약 조건 충돌 검색 및 해결충돌 항목 병합 섹션을 참조하십시오. 
RenameDestination 대상 복제본에서 충돌하는 항목이 원본 공급자에서 전송된 변경 내용과 더 이상 충돌하지 않도록 이름이 바뀌고 원본 변경 내용이 대상 복제본에 적용됩니다. 변경 내용 적용자는 변경 내용을 SaveItemChange 메서드에 전달하고 저장 동작을 RenameDestinationAndUpdateVersionData로 지정합니다. 
RenameSource 원본 공급자에서 전송된 변경 내용이 대상 복제본에서 충돌 항목과 더 이상 충돌하지 않도록 이름이 바뀌고 원본 변경 내용이 대상 복제본에 적용됩니다. 변경 내용 적용자는 변경 내용을 SaveItemChange 메서드에 전달하고 저장 동작을 RenameSourceAndUpdateVersionAndData로 지정합니다. 
SaveConflict 충돌을 기록하고 변경 내용을 적용하지 않습니다. 변경 내용 적용자는 충돌 데이터를 SaveConstraintConflict 메서드에 전달하여 충돌 로그에 충돌을 저장합니다. 충돌 기록에 대한 자세한 내용은 충돌 기록 및 관리를 참조하십시오. 
SkipChange 충돌을 무시하고 변경 내용을 적용하지 않습니다. 변경 내용 적용자는 충돌 데이터를 대상 공급자에 전달하지 않습니다. 
SourceWins 원본 복제본의 변경 내용이 항상 우선 적용됩니다. 변경 내용 적용자는 변경 내용을 SaveItemChange 메서드에 전달하고 저장 동작을 DeleteConflictingAndSaveSourceItem으로 지정합니다. 그러면 원본 변경 내용이 대상 복제본에 적용되고 충돌하는 대상 항목이 대상 복제본에서 삭제됩니다. 

주의

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 네임스페이스