Compartir a través de


Simultaneidad optimista

En un sistema con varios subprocesos y usuarios como Power Apps, las cambios en operaciones y datos suceden a menudo paralelamente. Un problema surge cuando dos o más operaciones de actualización o de eliminación del mismo dato suceden al mismo tiempo. Esta situación podría producir la pérdida de datos. La cracterística de simultaneidad optimista ofrece a sus aplicaciones la capacidad de detectar si un registro de tabla ha cambiado en el servidor entre el momento en que su aplicación recuperó el registro y cuando 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 simultaneidad optimista recuperando los metadatos de la tabla mediante el código o viendo los metadatos mediante el Explorador de metadatos y comprobando si la columna IsOptimisticConcurrencyEnabled se establece en true. Para tablas personalizadas, esta propiedad se establece en true de manera predeterminada.

Habilitar simultaneidad optimista

Puede habilitar el comportamiento de comprobación de simultaneidad optimista cuando ejecuta una UpdateRequest estableciendo la propiedad ConcurrencyBehavior de la solicitud como IfRowVersionMatches. De igual modo, para una DeleteRequest, establecería la propiedad ConcurrencyBehavior.

Cuando usa el contexto de SDK para .NET para realizar cambios de datos, establezca ConcurrencyBehavior en el objeto OrganizationServiceContext. Este valor se pasará a todos los mensajes de UpdateRequest y DeleteRequest usados por el OrganizationServiceContext cuando se llama a SaveChanges().

El comportamiento de simultaneidad optimista puede configurarse únicamente con una llamada API del SDK. Actualmente no existe un valor para él en un formulario de la aplicación web.

Aplicar simultaneidad optimista utilizando la API web

Para obtener más información sobre el uso de la API web para aplicar simultaneidad optimista, vea Aplicar la simultaneidad optimista

Aplicar simultaneidad optimista utilizando SDK para .NET

Para obtener más información sobre el uso del SDK para .NET para aplicar simultaneidad optimista, vea Comportamiento de la simultaneidad optimista

Administrar excepciones

Hay varias condiciones de error que pueden devolverse en una excepción de error <OrganizationServiceFault> de la llamada al servicio web cuando se utiliza la simultaneidad optimista.

  • ConcurrencyVersionMismatch (código=-2147088254)

    Cuando se proporciona una versión de fila y se indica el comportamiento de 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 (código= -2147088253)

    Cuando se indica el comportamiento IfVersionMatches y no se proporciona un valor para la versión de fila, se devuelve un error.

  • OptimisticConcurrencyNotEnabled (código=-2147088243)

    Cuando el comportamiento IfVersionMatches se indica en una actualización de una tabla y, cuando la simultaneidad optimista no está habilitada, se devuelve un error.

    Puede comprobar la propiedad Code del error devuelto para determinar si el error se relaciona con la simultaneidad optimista. Los códigos de las condiciones de error que aparecieron anteriormente se obtuvieron del código auxiliar ErrorCodes.cs.

Nota

¿Puede indicarnos sus preferencias de idioma de documentación? Realice una breve encuesta. (tenga en cuenta que esta encuesta está en inglés)

La encuesta durará unos siete minutos. No se recopilan datos personales (declaración de privacidad).