다음을 통해 공유


ConstraintConflictReason 열거형

제약 조건 충돌이 발생할 수 있는 이유를 나타냅니다.

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

구문

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

멤버

  멤버 이름 설명
Collision 기존 항목과 이름이 같은 항목의 경우와 같이 저장소의 다른 항목과 충돌하여 항목을 저장할 수 없습니다. 공급자는 대상 항목의 ID를 충돌 항목 ID로 지정해야 합니다. 
Identity 원본 복제본과 대상 복제본의 항목 ID가 일치하지 않습니다. 예를 들어 복제본 X는 ID가 각각 id1과 id2인 항목을 병합한 후 병합된 항목에 id1을 할당하여 두 항목 간의 중복 충돌을 해결합니다. 반면에 복제본 Y는 ID가 각각 id1과 id2인 항목에 대해 id1로 식별된 항목의 이름을 바꾸고 두 항목을 모두 유지하여 항목 간의 중복 충돌을 해결합니다. 복제본 X는 id1로 식별되는 병합된 항목과 id2가 id1에 병합되었음을 나타내는 병합 삭제 표식을 보냅니다. 이제 id1에서 충돌이 검색된 후 동시성 충돌로 해결되고, id2에서 충돌이 검색된 후 충돌 이유를 Identity로 지정하여 동기화 응용 프로그램에 ID 충돌로 보고됩니다. 그러면 응용 프로그램에서 충돌을 해결할 때 원본 변경 내용을 유지할지 아니면 대상 변경 내용을 유지할지를 결정합니다.  
NoParent 항목에 필요한 부모 항목이 저장소에 없으므로 해당 항목을 계층적 데이터 저장소에 저장할 수 없습니다. 필요에 따라 공급자는 없는 부모 항목의 ID를 충돌 항목 ID로 지정할 수 있습니다. 
Other 항목 또는 변경 단위가 대상 복제본의 다른 제약 조건을 위반합니다. 필요에 따라 공급자는 충돌 항목의 ID를 충돌 항목 ID로 지정할 수 있습니다. 

주의

대상 공급자는 변경 내용 적용자에 제약 조건 충돌을 보고할 때 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 네임스페이스