Supprimer toutes les lignes dans la liste sharepoint à l'aide du Contexte Client et à la Requête CAML
Je suis nouveau sur SharePoint et que vous voulez supprimer toutes les lignes dans une liste SharePoint à l'aide de C# ClientContext classe et CAML Requête.
L'efficacité va vous serait probablement bien servi pour déplacer le ExecuteQuery() en dehors de la boucle. Si vous déplacez le ExecuteQuery à l'extérieur de la boucle, et vous avez de nombreuses supprime envoyé comme "une exécution" vous pourriez potentiellement une exception dans le cas où Sharepoint pense que votre demande est trop grand (il m'est arrivé avec quelques milliers de suppressions). Voir sharepoint.stackexchange.com/questions/44894/... je suis d'Accord avec @n00b, mais dans le but de réduire la surcharge du réseau j'ajouterais if (counter % 100 == 0){ clientContext.ExecuteQuery(); }
Je l'ai résolu. L'apprentissage est que nous avons besoin de supprimer les éléments de la liste dans l'ordre inverse.
Lien: http://msdn.microsoft.com/en-us/library/microsoft.sharepoint.splistitemcollection.delete.aspx
Si vous déplacez le ExecuteQuery à l'extérieur de la boucle, et vous avez de nombreuses supprime envoyé comme "une exécution" vous pourriez potentiellement une exception dans le cas où Sharepoint pense que votre demande est trop grand (il m'est arrivé avec quelques milliers de suppressions). Voir sharepoint.stackexchange.com/questions/44894/...
je suis d'Accord avec @n00b, mais dans le but de réduire la surcharge du réseau j'ajouterais
if (counter % 100 == 0){ clientContext.ExecuteQuery(); }
OriginalL'auteur Yogesh
Une autre solution de contournement:
- Créer des éléments de (a dit: deleteAllItems), sur une nouvelle liste (a dit: configuration).
L'utilisation de CAML changer deleteAllItems valeur de False à True.
ensuite, l'utilisation de flux de travail,
si deleteAllItems == True, supprimer tous les éléments.
réinitialiser deleteAllItems à False.
Résoudre le côté client de problème de performances. 🙂
OriginalL'auteur YHTAN