Nota:
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
En un sistema multiproceso y multiusuario, como Power Apps, las operaciones y los cambios de datos a menudo se producen en paralelo. Se produce un problema cuando se producen dos o más operaciones de actualización o eliminación en el mismo fragmento de datos al mismo tiempo. Esta situación podría dar lugar a una pérdida de datos. La característica de simultaneidad optimista proporciona la capacidad de que las aplicaciones detecten si un registro de tabla ha cambiado en el servidor en el tiempo entre el momento en que la aplicación recuperó el registro y cuándo intenta actualizar o eliminar ese registro.
La simultaneidad optimista es compatible con todas las tablas listas para usar habilitadas para la sincronización sin conexión y todas las tablas personalizadas. Puede determinar si una tabla admite la simultaneidad optimista recuperando los metadatos de la tabla mediante código o viendo los metadatos mediante el Explorador de metadatos y compruebe si la columna IsOptimisticConcurrencyEnabled está establecida trueen . En el caso de las tablas personalizadas, esta propiedad se establece true en de forma predeterminada.
Habilitar simultaneidad optimista
Puede habilitar el comportamiento de comprobación de concurrencia optimista al ejecutar un UpdateRequest estableciendo la propiedad ConcurrencyBehavior de la solicitud en IfRowVersionMatches. Del mismo modo, para un DeleteRequest, establecería la propiedad ConcurrencyBehavior.
Cuando utilice el SDK en el contexto de .NET para realizar cambios de datos, establezca ConcurrencyBehavior en el objeto OrganizationServiceContext. Este valor se pasará a todos los mensajes de UpdateRequest y DeleteRequest utilizados por OrganizationServiceContext cuando se llame a SaveChanges().
El comportamiento de simultaneidad optimista solo se puede establecer a través de una llamada API del SDK. Actualmente no hay ninguna configuración para ella en forma de aplicación web.
Aplicar simultaneidad optimista utilizando la API web
Para obtener información sobre el uso de la API web para aplicar la simultaneidad optimista, consulte Aplicación de la simultaneidad optimista.
Aplicar concurrencia optimista usando el SDK para .NET
Para obtener información sobre el uso del SDK para .NET para aplicar la simultaneidad optimista, consulte Comportamiento de simultaneidad optimista.
Administrar excepciones
Hay varias condiciones de error que se pueden devolver en una excepción con error <OrganizationServiceFault> de la llamada al servicio web al usar simultaneidad optimista.
ConcurrencyVersionMismatch (code=-2147088254)
Cuando se proporciona una versión de fila y se indica el comportamiento IfVersionMatches , si la versión del registro existente no coincide con la versión de fila proporcionada en la solicitud, se devuelve un error.
ConcurrencyVersionNotProvided (code= -2147088253)
Cuando se indica el comportamiento IfVersionMatches y no se proporciona ningún valor para la versión de fila, se devuelve un error.
OptimisticConcurrencyNotEnabled (code=-2147088243)
Cuando el comportamiento IfVersionMatches se indica en una actualización de una tabla y donde la simultaneidad optimista no está habilitada, se devuelve un error.
Puede comprobar la propiedad Code del error devuelto para determinar si el error está relacionado con la simultaneidad optimista. Los códigos de las condiciones de error que se mostraron anteriormente se obtuvieron del código auxiliar de ErrorCodes.cs.