Partager via


Accès concurrentiel optimiste

Dans un système multithread et multiutilisateur comme Power Apps, les opérations et les modifications apportées aux données se produisent souvent en parallèle. Un problème surgit lorsque deux ou plusieurs opérations de mise à jour ou de suppression sont effectuées simultanément sur le même élément de données. Cette situation peut avoir pour résultat une perte de données. La fonctionnalité d’accès concurrentiel optimiste permet à vos applications de détecter si un enregistrement de table a changé sur le serveur entre le moment où votre application a récupéré l’enregistrement et le moment où elle tente de mettre à jour ou de supprimer cet enregistrement.

L’accès concurrentiel optimiste est pris en charge sur toutes les tables prêtes à l’emploi activées pour la synchronisation hors connexion et toutes les tables personnalisées. Vous pouvez déterminer si une table prend en charge l’accès concurrentiel optimiste en récupérant les métadonnées de la table à l’aide du code ou en affichant les métadonnées à l’aide du Navigateur de métadonnées, et vérifiez si la colonne IsOptimisticConcurrencyEnabled est réglée sur true. Pour les tables personnalisées, cette propriété est définie sur true par défaut.

Activer l’accès concurrentiel optimiste

Vous pouvez activer le comportement de vérification de l’accès concurrentiel optimiste lors de l’exécution de UpdateRequest en définissant la propriété ConcurrencyBehavior de la demande sur IfRowVersionMatches. De même, pour DeleteRequest, définissez la propriété ConcurrencyBehavior.

Lors de l’utilisation du contexte du SDK pour .NET pour effectuer des modifications de données, définissez ConcurrencyBehavior sur l’objet OrganizationServiceContext. Cette valeur sera passée à tous les messages UpdateRequest et DeleteRequest utilisés par OrganizationServiceContext lorsque SaveChanges() est appelé.

Le comportement d’accès concurrentiel optimiste ne peut être défini que via un appel API SDK. Il n’existe actuellement aucun paramètre pour lui dans les formulaires de l’application Web.

Appliquer l’accès concurrentiel optimiste à l’aide de l’API Web

Pour plus d’informations sur l’utilisation de l’API Web pour appliquer l’accès concurrentiel optimiste, voir ppliquer l’accès concurrentiel optimiste

Appliquer l’accès concurrentiel optimiste à l’aide du SDK pour .NET

Pour plus d’informations sur l’utilisation du SDK pour .NET pour appliquer l’accès concurrentiel optimiste, voir Comportement d’accès concurrentiel optimiste

Gérer les exceptions

Il existe plusieurs conditions d’erreur qui peuvent être renvoyées dans une exception d’erreur <OrganizationServiceFault > à partir de l’appel de service Web lors de l’utilisation de l’accès concurrentiel optimiste.

  • ConcurrencyVersionMismatch (code=-2147088254)

    Lorsqu’une version de ligne est fournie et que le comportement IfVersionMatches est indiqué, si la version de l’enregistrement existant ne correspond pas à la version de ligne fournie dans la demande, une erreur est renvoyée.

  • ConcurrencyVersionNotProvided (code= -2147088253)

    Lorsque le comportement IfVersionMatches est indiqué et qu’aucune valeur pour la version de ligne n’est fournie, une erreur est renvoyée.

  • OptimisticConcurrencyNotEnabled (code=-2147088243)

    Quand le comportement IfVersionMatches est indiqué lors d’une mise à jour d’une table, et lorsque l’accès concurrentiel optimiste n’est pas activé, une erreur est renvoyée.

    Vous pouvez activer la propriété Code du défaut renvoyé pour déterminer si le défaut est lié à l’accès concurrentiel optimiste. Les codes des conditions d’erreur indiqués ci-dessus ont été obtenus auprès du code d’assistance ErrorCodes.cs.

Notes

Pouvez-vous nous indiquer vos préférences de langue pour la documentation ? Répondez à un court questionnaire. (veuillez noter que ce questionnaire est en anglais)

Le questionnaire vous prendra environ sept minutes. Aucune donnée personnelle n’est collectée (déclaration de confidentialité).