Partilhar via


Método RecoverableErrorReportingContext.RecordConstraintError

Registra um erro de restrição que ocorreu durante a tentativa de aplicar uma alteração a um item. Usado para descrever um item local que está em um conflito de restrição com a alteração.

Namespace: Microsoft.Synchronization.SimpleProviders
Assembly: Microsoft.Synchronization.SimpleProviders (em microsoft.synchronization.simpleproviders.dll)

Sintaxe

'Declaração
Public Sub RecordConstraintError ( _
    conflictingItemKey As ItemFieldDictionary _
)
'Uso
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
)

Parâmetros

  • conflictingItemKey
    A chave do item para o qual um erro de restrição está sendo registrado.

Exceções

Tipo de exceção Condição

ChangeDeferredByProviderException

A alteração que estava sendo aplicada foi adiada pelo provedor até a próxima sessão de sincronização como resultado do conflito de restrição.

SimpleProviderInvalidOperationException

Havia vários erros de restrição, um erro de restrição foi relatado em um objeto que não é mais válido ou a política de erro de restrição não permite que erros de restrição sejam recuperáveis.

Comentários

A alteração será reaplicada ou resolvida posteriormente na sessão de sincronização. Para obter mais informações sobre conflitos de restrição, consulte Manipulando conflitos para provedores simples.

Exemplo

O exemplo de código a seguir mostra uma implementação do método InsertItem que aplica inserções a um repositório de dados de amostra na memória. Se a inserção não puder ser aplicada, o método registrará um erro de restrição. Para exibir esse código no contexto de um aplicativo completo, consulte o aplicativo "Sync101 using Simple Sync Provider" disponível no Sync Framework SDK e em Code Gallery.

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

Consulte também

Referência

Classe RecoverableErrorReportingContext
Membros RecoverableErrorReportingContext
Namespace Microsoft.Synchronization.SimpleProviders