Partager via


SaveChangeContext.RecordConstraintConflictForItem méthode (SyncId, ConstraintConflictReason)

Signale qu'un conflit de contraintes s'est produit lorsque le fournisseur de destination a essayé d'appliquer la modification au réplica de destination, et spécifie l'ID de l'élément de destination qui est en conflit.

Espace de noms: Microsoft.Synchronization
Assembly: Microsoft.Synchronization (dans microsoft.synchronization.dll)

Syntaxe

'Déclaration
Public Sub RecordConstraintConflictForItem ( _
    conflictingItemId As SyncId, _
    reason As ConstraintConflictReason _
)
'Utilisation
Dim instance As SaveChangeContext
Dim conflictingItemId As SyncId
Dim reason As ConstraintConflictReason

instance.RecordConstraintConflictForItem(conflictingItemId, reason)
public void RecordConstraintConflictForItem (
    SyncId conflictingItemId,
    ConstraintConflictReason reason
)
public:
void RecordConstraintConflictForItem (
    SyncId^ conflictingItemId, 
    ConstraintConflictReason reason
)
public void RecordConstraintConflictForItem (
    SyncId conflictingItemId, 
    ConstraintConflictReason reason
)
public function RecordConstraintConflictForItem (
    conflictingItemId : SyncId, 
    reason : ConstraintConflictReason
)

Paramètres

  • conflictingItemId
    ID de l'élément de destination qui est en conflit avec la modification à appliquer.
  • reason
    Raison pour laquelle le conflit s'est produit.

Exceptions

Type d'exception Condition

ArgumentNullException

conflictingItemId est une Null.

SyncInvalidOperationException

Un conflit de contraintes ou une erreur récupérable a déjà été défini sur cet objet.

Exemple

L'exemple suivant vérifie si un nouvel élément peut être créé dans le magasin d'éléments. Si l'élément ne peut pas être créé, un conflit de contraintes est enregistré. L'exemple de code est tiré d'une implémentation de SaveChangeWithChangeUnits.

Case SaveChangeAction.Create
    If True Then
        ' Create a new item. Report a constraint conflict if one occurs.
        Try
            Dim constraintReason As ConstraintConflictReason
            Dim conflictingItemId As SyncId = Nothing
            ' Check if the item can be created or if it causes a constraint conflict.
            If _ContactStore.CanCreateContact(change, DirectCast(context.ChangeData, String()), constraintReason, conflictingItemId) Then
                ' No conflict, so create the item.
                _ContactStore.CreateContactFromSync(change, DirectCast(context.ChangeData, String()))
            Else
                ' A constraint conflict occurred, so report this to the change applier.
                context.RecordConstraintConflictForItem(conflictingItemId, constraintReason)
            End If
        Catch ex As Exception
            ' Some other error occurred, so exclude this item for the rest of the session.
            Dim errData As New RecoverableErrorData(ex)
            context.RecordRecoverableErrorForItem(errData)
        End Try
        Exit Select
    End If
case SaveChangeAction.Create:
{
    // Create a new item. Report a constraint conflict if one occurs.
    try
    {
        ConstraintConflictReason constraintReason;
        SyncId conflictingItemId;
        // Check if the item can be created or if it causes a constraint conflict.
        if (_ContactStore.CanCreateContact(change, (string[])context.ChangeData, out constraintReason, out conflictingItemId))
        {
            // No conflict, so create the item.
            _ContactStore.CreateContactFromSync(change, (string[])context.ChangeData);
        }
        else
        {
            // A constraint conflict occurred, so report this to the change applier.
            context.RecordConstraintConflictForItem(conflictingItemId, constraintReason);
        }
    }
    catch (Exception ex)
    {
        // Some other error occurred, so exclude this item for the rest of the session.
        RecoverableErrorData errData = new RecoverableErrorData(ex);
        context.RecordRecoverableErrorForItem(errData);
    }
    break;
}

Voir aussi

Référence

Classe SaveChangeContext
Membres SaveChangeContext
Espace de noms Microsoft.Synchronization