다음을 통해 공유


RecoverableErrorReportingContext.RecordConstraintError 메서드

변경 내용을 항목에 적용하는 동안 발생한 제약 조건 오류를 기록합니다. 변경 내용과 제약 조건 충돌 상태인 로컬 항목을 설명하는 데 사용됩니다.

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

구문

‘선언
Public Sub RecordConstraintError ( _
    conflictingItemKey As ItemFieldDictionary _
)
‘사용 방법
Dim instance As RecoverableErrorReportingContext
Dim conflictingItemKey As ItemFieldDictionary

instance.RecordConstraintError(conflictingItemKey)
public void RecordConstraintError (
    ItemFieldDictionary conflictingItemKey
)
public:
void RecordConstraintError (
    ItemFieldDictionary^ conflictingItemKey
)
public void RecordConstraintError (
    ItemFieldDictionary conflictingItemKey
)
public function RecordConstraintError (
    conflictingItemKey : ItemFieldDictionary
)

매개 변수

  • conflictingItemKey
    제약 조건 오류가 기록될 항목의 키입니다.

예외

예외 형식 조건

ChangeDeferredByProviderException

제약 조건 충돌의 결과로 적용 중인 변경 내용이 공급자에 의해 다음 동기화 세션까지 지연되었습니다.

SimpleProviderInvalidOperationException

여러 제약 조건 오류가 있었거나 더 이상 유효하지 않은 개체에 대한 제약 조건 오류가 보고되었거나 제약 조건 오류 정책에서 제약 조건 오류의 복구가 허용되지 않습니다.

주의

변경 내용은 나중에 동기화 세션에서 다시 적용되거나 해결됩니다. 제약 조건 충돌에 대한 자세한 내용은 단순 공급자의 충돌 처리를 참조하십시오.

예제

다음 코드 예제에서는 메모리 내 샘플 데이터 저장소에 삽입을 적용하는 InsertItem 메서드의 구현을 보여 줍니다. 이 메서드는 삽입을 적용할 수 없는 경우 제약 조건 오류를 기록합니다. 전체 응용 프로그램의 맥락에서 이 코드를 보려면 Sync Framework SDK 및 Code Gallery에서 사용할 수 있는 "Sync101 using Simple Sync Provider" 응용 프로그램을 참조하십시오.

public override void InsertItem(object itemData, 
    IEnumerable<SyncId> changeUnitsToCreate,
    RecoverableErrorReportingContext recoverableErrorReportingContext, 
    out ItemFieldDictionary keyAndUpdatedVersion, 
    out bool commitKnowledgeAfterThisItem)
{
    ItemTransfer transfer = (ItemTransfer)itemData;
    ItemData dataCopy = new ItemData(transfer.ItemData);

    // Check for duplicates, and record a constraint error if a duplicate is detected.
    if (!_store.Contains(transfer.Id))
    {
        _store.CreateItem(dataCopy, transfer.Id);
        keyAndUpdatedVersion = _store.CreateItemFieldDictionary(transfer.Id);
    }
    else
    {
        recoverableErrorReportingContext.RecordConstraintError(_store.CreateItemFieldDictionary(transfer.Id));
        keyAndUpdatedVersion = null;
    }
    commitKnowledgeAfterThisItem = false;
}
Public Overrides Sub InsertItem(ByVal itemData As Object, ByVal changeUnitsToCreate As IEnumerable(Of SyncId), ByVal recoverableErrorReportingContext As RecoverableErrorReportingContext, ByRef keyAndUpdatedVersion As ItemFieldDictionary, ByRef commitKnowledgeAfterThisItem As Boolean)
    Dim transfer As ItemTransfer = DirectCast(itemData, ItemTransfer)
    Dim dataCopy As New ItemData(transfer.ItemData)

    ' Check for duplicates, and record a constraint error if a duplicate is detected. 
    If Not _store.Contains(transfer.Id) Then
        _store.CreateItem(dataCopy, transfer.Id)
        keyAndUpdatedVersion = _store.CreateItemFieldDictionary(transfer.Id)
    Else
        recoverableErrorReportingContext.RecordConstraintError(_store.CreateItemFieldDictionary(transfer.Id))
        keyAndUpdatedVersion = Nothing
    End If
    commitKnowledgeAfterThisItem = False
End Sub

참고 항목

참조

RecoverableErrorReportingContext 클래스
RecoverableErrorReportingContext 멤버
Microsoft.Synchronization.SimpleProviders 네임스페이스