Exemple : Utiliser l'accès concurrentiel optimiste avec les opérations de mise à jour et de suppression
Date de publication : novembre 2016
S’applique à : Dynamics CRM 2015
Montre comment utiliser la fonction d'accès concurrentiel optimiste, introduite dans la Mise à jour 1 de Microsoft Dynamics CRM Online 2015, pour éviter une éventuelle perte de données lors de la mise à jour ou de la suppression d'enregistrements d'entité. Pour plus d'informations sur la technique utilisée, consultez la rubrique suivante : Réduire une éventuelle perte de données en utilisant l'accès concurrentiel optimiste
L'exemple complet peut être téléchargé à l'adresse MSDN : Utiliser l'accès concurrentiel optimiste avec les opérations de mise à jour et de suppression.
Conditions préalables
Pour exécuter cet exemple, vous devez disposer des éléments suivants :
Un accès à une organisation de la Mise à jour 1 de Microsoft Dynamics CRM Online 2015.
Microsoft .NET Framework 4.5.2 installé sur votre ordinateur de développement.
Une connexion Internet active pour télécharger automatiquement les packages NuGet requis lors de la génération de l'exemple.
Contenu de la rubrique
En quoi consiste cet exemple :
Installer les packages NuGet
Exécuter l'exemple
En quoi consiste cet exemple :
Cet exemple montre comment utiliser l'accès concurrentiel optimiste pour les opérations de mise à jour et de suppression. Les extraits de code affichant juste les sections principales de l'exemple sont indiqués. Cet exemple définit le comportement d'accès concurrentiel lors des demandes de mise à jour et de suppression. Le serveur recherchera donc une version spécifique d'un enregistrement de compte pour ces opérations. Si les opérations de mise à jour ou de suppression sont effectuées à l'aide d'un enregistrement avec une version de ligne différente, une exception est générée. Sinon, l'opération est réussie.
// Connect to the Organization service.
// The using statement assures that the service proxy will be properly disposed.
using (_serviceProxy = new OrganizationServiceProxy(serverConfig.OrganizationUri, serverConfig.HomeRealmUri,
serverConfig.Credentials, serverConfig.DeviceCredentials))
{
CreateRequiredRecords();
// Retrieve an account.
var account = _serviceProxy.Retrieve("account", _accountId, new ColumnSet("name","creditlimit"));
Console.WriteLine("\tThe row version of the created account is {0}", account.RowVersion);
if (account != null)
{
// Create an in-memory account object from the retrieved account.
Entity updatedAccount = new Entity()
{
LogicalName = account.LogicalName,
Id = account.Id,
RowVersion = account.RowVersion
};
// Update just the credit limit.
updatedAccount["creditlimit"] = new Money(1000000);
// Set the request's concurrency behavour to check for a row version match.
UpdateRequest accountUpdate = new UpdateRequest()
{
Target = updatedAccount,
ConcurrencyBehavior = ConcurrencyBehavior.IfRowVersionMatches
};
// Do the update.
UpdateResponse accountUpdateResponse = (UpdateResponse) _serviceProxy.Execute(accountUpdate);
Console.WriteLine("Account '{0}' updated with a credit limit of {1}.", account["name"],
((Money)updatedAccount["creditlimit"]).Value);
account = _serviceProxy.Retrieve("account", updatedAccount.Id, new ColumnSet());
Console.WriteLine("\tThe row version of the updated account is {0}", account.RowVersion);
_accountRowVersion = account.RowVersion;
}
DeleteRequiredRecords(promptforDelete);
}
// Delete the account record only if the row version matches.
EntityReference accountToDelete = new EntityReference("account", _accountId);
accountToDelete.RowVersion = _accountRowVersion;
DeleteRequest request = new DeleteRequest()
{
Target = accountToDelete,
ConcurrencyBehavior = ConcurrencyBehavior.IfRowVersionMatches
};
_serviceProxy.Execute(request);
Installer les packages NuGet
Téléchargez cet exemple et extrayez les fichiers.
Accédez au dossier C# et ouvrez le fichier de solution dans Microsoft Visual Studio.
Dans l'Explorateur de solutions, cliquez avec le bouton droit sur le projet et choisissez Gérer les packages NuGet.
Dans la liste déroulante en haut de la boîte de dialogue, sélectionnez Inclure la version préliminaire si vous utilisez une organisation préliminaire de Microsoft Dynamics CRM Online. Sinon, sélectionnez Stable uniquement.
Fermez la boîte de dialogue.
Les packages requis sont automatiquement installés lorsque vous générez la solution.
Exécuter l'exemple
Dans Visual Studio, appuyez sur F5 pour générer et exécuter l'exemple. Vous serez invité à accepter les licences des packages NuGet qui doivent être installés.
Si vous n'avez pas encore exécuté l'un des exemples de code géré Microsoft Dynamics 365, vous devez entrer les informations permettant d'exécuter le code. Sinon, entrez le numéro de l'un des serveurs Dynamics 365 que vous avez déjà configurés.
Invite
Description
Entrez un nom de serveur et un port Dynamics 365 [crm.dynamics.com]
Tapez le nom de votre serveur Microsoft Dynamics 365. La valeur par défaut est Microsoft Dynamics CRM Online (crm.dynamics.com) en Amérique du Nord.
Exemple :
crm5.dynamics.comN’incluez pas le nom de votre organisation ou protocole Internet (HTTP ou HTTPS). Vous serez invité à le saisir ultérieurement.
Is this organization provisioned in Microsoft Online Services (y/n) [n]
Tapez y s’il s’agit d’une organisation mise en service par Microsoft Online Services. Sinon, tapez n.
Entrez le domaine\nomutilisateur.
Pour Microsoft Dynamics CRM Online, entrez votre Compte Microsoft. Par exemple : someone@mydomain.onmicrosoft.com.
Entrez le mot de passe.
Tapez votre mot de passe. Votre mot de passe est enregistré en toute sécurité dans le Gestionnaire d'informations d'identification Windows pour une réutilisation ultérieure.
Spécifiez un numéro d'organisation (1-n) [1].
Dans la liste des organisations auxquelles vous appartenez, tapez le numéro correspondant. La valeur par défaut est 1, indiquant la première organisation de la liste.
L'exemple effectuera les opérations décrites dans En quoi consiste cet exemple : et pourra vous demander des options supplémentaires.
À la fin de l'exemple, appuyez sur ENTRÉE pour fermer la fenêtre de la console.
Voir aussi
Réduire une éventuelle perte de données en utilisant l'accès concurrentiel optimiste
© 2017 Microsoft. Tous droits réservés. Copyright