Sharepoint客户端对象模型更新集合中的所有项目

时间:2016-03-22 14:03:33

标签: sharepoint csom

我有一些测试代码适用于更新集合中的所有项目,但我已经看到在大多数情况下提示的提示,作为最佳实践,您应该只调用一次ExecuteQuery()。我不知道该怎么做,如果我删除了第一个调用,代码中断了一个集合尚未初始化错误。有没有办法将此代码更改为只有一个ExecuteQuery?我的代码如下。感谢。

static void Main(string[] args)
    {
        ClientContext context = new ClientContext("my url to list");
        List list = context.Web.Lists.GetByTitle("list name");
        CamlQuery query = new CamlQuery();
        query.ViewXml="<View><Query><Where><IsNull><FieldRef Name='xfoc'/></IsNull></Where></Query></View>";
        ListItemCollection items = list.GetItems(query);
        context.Load(items);
        context.ExecuteQuery();

        for (int i = 0; i < items.Count; i++ )
        {
            items[i]["Title"] = "unprocessed record # " + i.ToString();
            items[i].Update();
        }

        context.ExecuteQuery();

        Console.ReadKey();



    }

1 个答案:

答案 0 :(得分:1)

代码看起来很好。我相信你误解了最佳做法。在您的示例中,您无法在不首先从服务器获取项目集合的情况下更新项目集合。所以第一个ExecuteQuery()是强制性的。

将ExecuteQuery()视为到服务器的往返行程以获取数据。它必须在绝对需要的地方使用。

this文章中查看最佳实践4。