2016-03-22 2 views
0

У меня есть тестовый код, который отлично подходит для обновления всех элементов коллекции, но я видел подсказки, которые говорят в большинстве случаев, как наилучшая практика, вы должны иметь только один вызов ExecuteQuery(). Я не уверен, как это сделать, если я удалю первый вызов, разрывы кода с коллекцией не были инициализированы ошибкой. Есть ли способ изменить этот код, чтобы иметь только один ExecuteQuery? Мой код ниже. Благодарю.Модель объекта клиента Sharepoint обновляет все элементы в коллекции

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

Код выглядит хорошо. Я считаю, что вы неправильно поняли лучшую практику. В вашем примере вы не можете обновлять коллекцию элементов, даже не получая его с сервера на первом месте. Поэтому первый ExecuteQuery() является обязательным.

Think ExecuteQuery() как обратная связь с сервером для получения данных. Он должен использоваться там, где это абсолютно необходимо.

Проверьте лучшую практику 4 в this статье.

+0

Спасибо @NLV, это полезно и устраняет путаницу. – Gavin

Смежные вопросы