2010-06-23 7 views
2

J'ai des problèmes avec Dynamics CRM 4. J'essaie de mettre à jour les prix et la disponibilité avec le service crm dans une application WPF, mais cela prend une éternité. Jusqu'à une demi-heure avec environ 6000 produits. Cela devrait-il prendre si longtemps? Puis-je le faire d'une autre manière plus rapide?Mise à jour des entités dans Dynamics CRM 4 via CRM-webservice prend une éternité

QueryExpression query = new QueryExpression(); 
query.EntityName = EntityName.product.ToString(); 

BusinessEntityCollection entities = crmService.RetrieveMultiple(query); 

foreach (product crmProduct in entities.BusinessEntities.OfType<product>()) 
{ 
    crmProduct.price = new CrmMoney() { Value = 123M }; 
    crmProduct.stock = new CrmNumber() { Value = 123 }; 
    crmService.Update(crmProduct); 
} 

Répondre

0

choisissez la valeur de votre objet Service CRM:

crmService.UnsafeAuthenticatedConnectionSharing = true; 

Cela rend le service authentifie une seule fois, puis utilise les mêmes informations d'identification. Ce serait une mauvaise chose si le code se trouvait dans un site web où plusieurs personnes utiliseraient le même service CRM, car les futurs utilisateurs pourraient avoir accès à des enregistrements qu'ils ne devraient pas, cependant, dans une application WPF où il n'y en a qu'un utilisateur, ce n'est pas un problème.

Here's an article avec plus de métriques et d'autres choses à penser à peaufiner. Il s'applique à l'origine à CRM 3, mais nous avons trouvé les mêmes paramètres dans 4 encore améliorer les performances.

2

Pour améliorer les performances, essayez de mettre à jour uniquement les champs que vous souhaitez réellement mettre à jour. Votre code met à jour chaque attribut, car vous utilisez le produit provenant de CRM. Lorsque vous faites cela, tous les plugins sont déclenchés et parce que le produit est une entité CRM de base, plus de logique CRM peut être déclenchée lors de la mise à jour de cette entité. Essayez d'obtenir uniquement la clé primaire du produit (productid) et définissez les deux champs et appelez l'instruction de mise à jour. Avec ceci, vous devriez accomplir environ 100 demandes par seconde sur le matériel standard en utilisant un processus séquentiel.

Pour obtenir davantage de mises à jour, essayez d'exécuter le processus sur le serveur CRM ou d'utiliser le traitement parallèle.

Questions connexes