Remarque
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de vous connecter ou de modifier des répertoires.
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de modifier des répertoires.
Sur un système multithread et multi-utilisateur comme Power Apps, les opérations et les modifications de données se produisent souvent en parallèle. Un problème se produit lorsque deux opérations de mise à jour ou de suppression sur le même élément de données se produisent en même temps. Cette situation peut entraîner 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 dans le temps entre le moment où votre application a récupéré l’enregistrement et quand 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érifier si la colonne IsOptimisticConcurrencyEnabled est définie truesur . Pour les tables personnalisées, cette propriété est définie true par défaut.
Activer la concurrence optimiste
Vous pouvez activer le comportement de vérification de la concurrence optimiste lors de l'exécution d’un UpdateRequest en définissant la propriété ConcurrencyBehavior de la requête à IfRowVersionMatches. De même, pour un DeleteRequest, vous définissez la ConcurrencyBehavior propriété.
Lorsque vous utilisez le Kit de développement logiciel (SDK) pour le contexte .NET pour apporter des modifications aux données, définissez-le ConcurrencyBehavior sur l’objet OrganizationServiceContext . Cette valeur est transmise à tous les messages UpdateRequest et DeleteRequest utilisés par OrganizationServiceContext lorsqu’il SaveChanges() est appelé.
Le comportement de concurrence optimiste ne peut être défini que via un appel d’API SDK. Il n’existe actuellement aucun paramètre pour celui-ci dans une forme d’application web.
Appliquer une concurrence optimiste à l’aide de l’API web
Pour plus d’informations sur l’utilisation de l’API web pour appliquer une concurrence optimiste, consultez Appliquer une concurrence optimiste
Appliquer une concurrence optimiste à l’aide du Kit de développement logiciel (SDK) pour .NET
Pour plus d’informations sur l’utilisation du Kit de développement logiciel (SDK) pour .NET afin d’appliquer une concurrence optimiste, consultez 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 retourné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 retournée.
ConcurrenceOptimisteNonActivée (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 vérifier la propriété Code de l’erreur retournée pour déterminer si l’erreur est liée à la concurrence optimiste. Les codes des conditions d’erreur affichées précédemment ont été obtenus à partir du code d’assistance ErrorCodes.cs.