<?xml version="1.0" encoding="UTF-8" ?>
<?xml-stylesheet type="text/xsl" href="http://blogs.msdn.com/utility/FeedStylesheets/rss.xsl" media="screen"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:wfw="http://wellformedweb.org/CommentAPI/"><channel><title>Patrice Manac'h Web Log : SharePoint</title><link>http://blogs.msdn.com/pmanach/archive/tags/SharePoint/default.aspx</link><description>Tags: SharePoint</description><dc:language>fr-FR</dc:language><generator>CommunityServer 2.1 SP1 (Build: 61025.2)</generator><item><title>Modifications en nombre avec SharePoint</title><link>http://blogs.msdn.com/pmanach/archive/2009/12/12/modifications-en-nombre-avec-sharepoint.aspx</link><pubDate>Sat, 12 Dec 2009 09:24:39 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:9936038</guid><dc:creator>pmanach</dc:creator><slash:comments>0</slash:comments><comments>http://blogs.msdn.com/pmanach/comments/9936038.aspx</comments><wfw:commentRss>http://blogs.msdn.com/pmanach/commentrss.aspx?PostID=9936038</wfw:commentRss><description>&lt;p&gt;Je suis récemment intervenu chez un client qui avait des problèmes de performances sur l’insertion de plus de 2000 entrées dans un liste : la page réalisant l’action tombait en erreur au bout de 8 mn :(&lt;/p&gt;  &lt;p&gt;Le code de la page n’avait pas de problèmes fondamentaux : une simple boucle sur un SPList.Items.Add, rien de particulier. Mais c’était pourtant cela le problème : certaines API SharePoint du modèle objet, bien pratiques par ailleurs, ne sont pas assez performantes pour être utilisées pour réaliser du traitement de batch. Il faut descendre plus bas niveau. Pour de la recherche, cela signifie souvent basculer sur du SPQuery ou du CrossListQueryInfo. Et pour de l’insertion, de la modification ou de la suppression, il faut utilser &lt;a href="http://msdn.microsoft.com/en-us/library/microsoft.sharepoint.spweb.processbatchdata.aspx" target="_blank"&gt;SPWeb.ProcessBatchData&lt;/a&gt;. Cette API prend en entrée une liste de commande à exécuter, et renvoie une liste de statuts.&lt;/p&gt;  &lt;p&gt;En reprenant un &lt;a href="http://dotnetstep.blogspot.com/2009/01/batch-update-in-sharepoint.html" target="_blank"&gt;exemple&lt;/a&gt;, la syntaxe en entrée donne :&lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot;?&amp;gt;      &lt;br /&gt;&amp;lt;ows:Batch OnError=&amp;quot;Continue&amp;quot;&amp;gt;       &lt;br /&gt;&amp;lt;Method ID=&amp;quot;1&amp;quot;&amp;gt;       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; &amp;lt;SetList&amp;gt;71a9fac3-2e94-4246-8fec-41e30ea65b06&amp;lt;/SetList&amp;gt;       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; &amp;lt;SetVar Name=&amp;quot;Cmd&amp;quot;&amp;gt;&lt;strong&gt;&lt;font color="#ff0000"&gt;Save&lt;/font&gt;&lt;/strong&gt;&amp;lt;/SetVar&amp;gt;       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; &amp;lt;SetVar Name=&amp;quot;ID&amp;quot;&amp;gt;&lt;strong&gt;&lt;font color="#ff0000"&gt;New&lt;/font&gt;&lt;/strong&gt;&amp;lt;/SetVar&amp;gt;       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; &amp;lt;SetVar Name=&amp;quot;urn:schemas-microsoft-com:office:office#OrderDate&amp;quot;&amp;gt;2009-2-21&amp;lt;/SetVar&amp;gt;       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; &amp;lt;SetVar Name=&amp;quot;urn:schemas-microsoft-com:office:office#OrderDateTime&amp;quot;&amp;gt;2009-2-21&amp;lt;/SetVar&amp;gt;       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; &amp;lt;SetVar Name=&amp;quot;urn:schemas-microsoft-com:office:office#CustomerID&amp;quot;&amp;gt;1;#Cust_1&amp;lt;/SetVar&amp;gt;       &lt;br /&gt;&amp;#160; &amp;lt;/Method&amp;gt;       &lt;br /&gt;&amp;lt;Method ID=&amp;quot;2&amp;quot;&amp;gt;       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; &amp;lt;SetList&amp;gt;71a9fac3-2e94-4246-8fec-41e30ea65b06&amp;lt;/SetList&amp;gt;       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; &amp;lt;SetVar Name=&amp;quot;Cmd&amp;quot;&amp;gt;&lt;strong&gt;&lt;font color="#ff0000"&gt;Save&lt;/font&gt;&lt;/strong&gt;&amp;lt;/SetVar&amp;gt;       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; &amp;lt;SetVar Name=&amp;quot;ID&amp;quot;&amp;gt;&lt;strong&gt;&lt;font color="#ff0000"&gt;3&lt;/font&gt;&lt;/strong&gt;&amp;lt;/SetVar&amp;gt;       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; &amp;lt;SetVar Name=&amp;quot;urn:schemas-microsoft-com:office:office#OrderDate&amp;quot;&amp;gt;2009-2-21&amp;lt;/SetVar&amp;gt;       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; &amp;lt;SetVar Name=&amp;quot;urn:schemas-microsoft-com:office:office#OrderDateTime&amp;quot;&amp;gt;2009-2-21&amp;lt;/SetVar&amp;gt;       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; &amp;lt;SetVar Name=&amp;quot;urn:schemas-microsoft-com:office:office#CustomerID&amp;quot;&amp;gt;1;#Cust_1&amp;lt;/SetVar&amp;gt;       &lt;br /&gt;&amp;#160; &amp;lt;/Method&amp;gt;       &lt;br /&gt;&amp;lt;Method ID=&amp;quot;3&amp;quot;&amp;gt;       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; &amp;lt;SetList&amp;gt;71a9fac3-2e94-4246-8fec-41e30ea65b06&amp;lt;/SetList&amp;gt;       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; &amp;lt;SetVar Name=&amp;quot;Cmd&amp;quot;&amp;gt;&lt;strong&gt;&lt;font color="#ff0000"&gt;Delete&lt;/font&gt;&lt;/strong&gt;&amp;lt;/SetVar&amp;gt;       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; &amp;lt;SetVar Name=&amp;quot;ID&amp;quot;&amp;gt;&lt;strong&gt;&lt;font color="#ff0000"&gt;4&lt;/font&gt;&lt;/strong&gt;&amp;lt;/SetVar&amp;gt;       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; &amp;lt;SetVar Name=&amp;quot;urn:schemas-microsoft-com:office:office#OrderDate&amp;quot;&amp;gt;2009-2-21&amp;lt;/SetVar&amp;gt;       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; &amp;lt;SetVar Name=&amp;quot;urn:schemas-microsoft-com:office:office#OrderDateTime&amp;quot;&amp;gt;2009-2-21&amp;lt;/SetVar&amp;gt;       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; &amp;lt;SetVar Name=&amp;quot;urn:schemas-microsoft-com:office:office#CustomerID&amp;quot;&amp;gt;2;#Cust_2&amp;lt;/SetVar&amp;gt;       &lt;br /&gt;&amp;#160; &amp;lt;/Method&amp;gt;       &lt;br /&gt;&amp;lt;/ows:Batch&amp;gt;&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;La première commande créé un nouvel élément dans la liste dont l’identifiant est passé en paramètre. La deuxième modifie un élément existant. La troisième supprime un élément.&lt;/p&gt;  &lt;p&gt;Il y a quelques petites astuces à connaître lorsque l’on utilise cette API. L’une des plus épineuse est la gestion des sous-répertoire. La réponse est en fait simple, mais mal documentée : il faut utilisé un sous-noeud owsfileref avec le chemin relatif de l’item à utiliser :&lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;&amp;lt;SetVar Name=&amp;quot;owsfileref&amp;quot;&amp;gt;/sites/1/docs/codes.txt&amp;lt;/SetVar&amp;gt;&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;Dans le cas de mon client, on est redescendu à 40 s, sans erreurs :)&lt;/p&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9936038" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/pmanach/archive/tags/SharePoint/default.aspx">SharePoint</category></item><item><title>VS2010 et les projets SharePoint</title><link>http://blogs.msdn.com/pmanach/archive/2009/05/18/vs2010-et-les-projets-sharepoint.aspx</link><pubDate>Mon, 18 May 2009 18:46:57 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:9625439</guid><dc:creator>pmanach</dc:creator><slash:comments>1</slash:comments><comments>http://blogs.msdn.com/pmanach/comments/9625439.aspx</comments><wfw:commentRss>http://blogs.msdn.com/pmanach/commentrss.aspx?PostID=9625439</wfw:commentRss><description>&lt;p&gt;Si l’on n’y prête garde, tenter de créer un projet SharePoint avec Visual Studio 2010 peut réserver une mauvaise surprise :&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.msdn.com/blogfiles/pmanach/WindowsLiveWriter/VS2010etlesprojetsSharePoint_F9EC/image_2.png"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="image" border="0" alt="image" src="http://blogs.msdn.com/blogfiles/pmanach/WindowsLiveWriter/VS2010etlesprojetsSharePoint_F9EC/image_thumb.png" width="644" height="472" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;C’est vide :(&lt;/p&gt;  &lt;p&gt;Mais un petit détail change tout : la version du Framework ciblée :&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.msdn.com/blogfiles/pmanach/WindowsLiveWriter/VS2010etlesprojetsSharePoint_F9EC/image_4.png"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="image" border="0" alt="image" src="http://blogs.msdn.com/blogfiles/pmanach/WindowsLiveWriter/VS2010etlesprojetsSharePoint_F9EC/image_thumb_1.png" width="644" height="474" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;Bref, ne pas oublier que l’outil est multi-cibles :)&lt;/p&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9625439" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/pmanach/archive/tags/Visual+Studio+2010/default.aspx">Visual Studio 2010</category><category domain="http://blogs.msdn.com/pmanach/archive/tags/SharePoint/default.aspx">SharePoint</category></item></channel></rss>