Compartir a través de


RecoverableErrorReportingContext.RecordConstraintError Método

Registra un error de restricción que se produjo al intentar aplicar un cambio a un elemento. Se utiliza para describir un elemento local que está en conflicto de restricción con el cambio.

Espacio de nombres: Microsoft.Synchronization.SimpleProviders
Ensamblado: Microsoft.Synchronization.SimpleProviders (en microsoft.synchronization.simpleproviders.dll)

Sintaxis

'Declaración
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
    Clave del elemento para el que se registra un error de restricción.

Excepciones

Tipo de excepción Condición

ChangeDeferredByProviderException

El proveedor aplazó el cambio que se va a aplicar hasta la próxima sesión de sincronización a causa del conflicto de restricción.

SimpleProviderInvalidOperationException

Se produjeron varios errores de restricción, se notificó un error de restricción sobre un objeto que ya no es válido, o la directiva de errores de restricción no permite que los errores de restricción sean recuperables.

Notas

El cambio se volverá a aplicar o se resolverá más adelante en la sesión de sincronización. Para obtener más información sobre conflictos de restricción, vea Controlar conflictos en proveedores simples.

Ejemplo

En el ejemplo de código siguiente se muestra una implementación del método InsertItem que aplica inserciones a un almacén de datos de ejemplo en memoria. El método registra un error de restricción si la inserción no se puede aplicar. Para consultar este código en el contexto de una aplicación completa, vea la aplicación "Sync101 using Simple Sync Provider" que está disponible en Sync Framework SDK y en 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

Vea también

Referencia

RecoverableErrorReportingContext Clase
RecoverableErrorReportingContext Miembros
Microsoft.Synchronization.SimpleProviders Espacio de nombres