ConstraintConflictResolutionAction Enumeración
Representa las acciones que se realizan para resolver un conflicto de restricción determinado.
Espacio de nombres: Microsoft.Synchronization
Ensamblado: Microsoft.Synchronization (en Microsoft.Synchronization.dll)
Sintaxis
'Declaración
Public Enumeration ConstraintConflictResolutionAction
'Uso
Dim instance As ConstraintConflictResolutionAction
public enum ConstraintConflictResolutionAction
public enum class ConstraintConflictResolutionAction
type ConstraintConflictResolutionAction
public enum ConstraintConflictResolutionAction
Miembros
Nombre del miembro | Descripción | |
---|---|---|
SkipChange | Omita el conflicto y no aplique el cambio. El aplicador de cambios no pasa los datos del conflicto al proveedor de destino. | |
DestinationWins | El cambio realizado en la réplica de destino siempre gana. El aplicador de cambios pasa el cambio de origen al método SaveItemChange y especifica una acción de almacenamiento de DeleteAndStoreTombstone. El proveedor de destino crea un marcador de exclusión para el cambio de origen. Cuando el destino actúe como el origen en una sincronización posterior, enumerará un cambio que representa la eliminación del elemento de origen y, de esta forma, lo quita de la comunidad de sincronización. | |
SourceWins | El cambio realizado en la réplica de origen siempre gana. El aplicador de cambios pasa el cambio al método SaveItemChange y especifica una acción de almacenamiento de DeleteConflictingAndSaveSourceItem. El cambio de origen se aplica a la réplica de destino y el elemento de destino en conflicto se elimina en la réplica de destino. | |
SaveConflict | Registra el conflicto y no aplica el cambio. El aplicador de cambios pasa los datos del conflicto al método SaveConstraintConflict, que guarda el conflicto en un registro de conflictos. Para obtener más información sobre el registro de conflictos, vea Registrar y administrar conflictos. | |
Merge | Los datos del elemento de origen se combinan con el elemento de destino. El aplicador de cambios pasa los datos del cambio de la réplica de origen al método SaveItemChange y especifica una acción de almacenamiento de ChangeIdUpdateVersionAndMergeData. Para obtener detalles, consulte la sección Combinar elementos en conflicto de Detectar y resolver conflictos de restricción. | |
RenameSource | Se cambia el nombre al cambio que envió el proveedor de origen, de forma que ya no se contradiga con el elemento en conflicto en la réplica de destino, y el cambio de origen se aplica a la réplica de destino. El aplicador de cambios pasa el cambio al método SaveItemChange y especifica una acción de almacenamiento de RenameSourceAndUpdateVersionAndData. | |
RenameDestination | Se cambia el nombre al elemento en conflicto en la réplica de destino, de forma que ya no se contradiga con el cambio que envió el proveedor de origen, y el cambio de origen se aplica a la réplica de destino. El aplicador de cambios pasa el cambio al método SaveItemChange y especifica una acción de almacenamiento de RenameDestinationAndUpdateVersionData. |
Notas
Los miembros de ConstraintConflictResolutionAction especifican las medidas que toma el aplicador de cambios para resolver los conflictos de restricción. Los conflictos de restricción son conflictos que infringen las restricciones aplicadas a elementos o unidades de cambio, como la relación de las carpetas o la ubicación de los datos con un nombre idéntico dentro de un sistema de archivos. Cuando se especifica una directiva de resolución de conflictos de colisión, el aplicador de cambios especifica la acción de resolución de conflictos de restricción cuando se produce un conflicto de restricción de colisión. En caso contrario, la aplicación de sincronización especifica la acción de resolución de conflictos de restricción cuando recibe notificación de que se ha producido un conflicto de restricción.
Para obtener más información sobre conflictos de restricción, vea Detectar y resolver conflictos de restricción.
Ejemplos
En el ejemplo siguiente se implementa un controlador para el evento ItemConstraint. El controlador muestra los elementos en conflicto al usuario y establece la acción de resolución de conflictos de restricción en función de la respuesta del usuario.
Private Sub HandleItemConstraint(ByVal sender As [Object], ByVal args As ItemConstraintEventArgs)
If ConstraintConflictReason.Collision = args.ConstraintConflictReason Then
' Display the two items that are in conflict and solicit a resolution from the user.
Dim srcContact As New Contact(DirectCast(args.SourceChangeData, String()))
Dim destContact As New Contact(DirectCast(args.DestinationChangeData, String()))
Dim msg As String = ("Source change is " & srcContact.ToString() & vbLf & "Destination change is ") & destContact.ToString() & vbLf & "Click Yes to rename the source change and apply it." & vbLf & "Click No to rename the destination item and apply the source change." & vbLf & "Click Cancel to delete the destination item and apply the source change."
Dim ccDlg As New ConstraintConflictDlg(msg)
ccDlg.ShowDialog()
' Set the resolution action based on the user's response.
args.SetResolutionAction(ccDlg.Resolution)
Else
args.SetResolutionAction(ConstraintConflictResolutionAction.SaveConflict)
End If
End Sub
void HandleItemConstraint(Object sender, ItemConstraintEventArgs args)
{
if (ConstraintConflictReason.Collision == args.ConstraintConflictReason)
{
// Display the two items that are in conflict and solicit a resolution from the user.
Contact srcContact = new Contact((string[])args.SourceChangeData);
Contact destContact = new Contact((string[])args.DestinationChangeData);
string msg = "Source change is " + srcContact.ToString() +
"\nDestination change is " + destContact.ToString() +
"\nClick Yes to rename the source change and apply it." +
"\nClick No to rename the destination item and apply the source change." +
"\nClick Cancel to delete the destination item and apply the source change.";
ConstraintConflictDlg ccDlg = new ConstraintConflictDlg(msg);
ccDlg.ShowDialog();
// Set the resolution action based on the user's response.
args.SetResolutionAction(ccDlg.Resolution);
}
else
{
args.SetResolutionAction(ConstraintConflictResolutionAction.SaveConflict);
}
}