我有一些测试代码适用于更新集合中的所有项目,但我已经看到在大多数情况下提示的提示,作为最佳实践,您应该只调用一次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();
}
答案 0 :(得分:1)
代码看起来很好。我相信你误解了最佳做法。在您的示例中,您无法在不首先从服务器获取项目集合的情况下更新项目集合。所以第一个ExecuteQuery()是强制性的。
将ExecuteQuery()视为到服务器的往返行程以获取数据。它必须在绝对需要的地方使用。
在this文章中查看最佳实践4。