2016-03-22 10 views
0

コレクション内のすべてのアイテムを更新するためのテストコードがありますが、大部分の場合、ベストプラクティスとして、 ExecuteQuery()への1回の呼び出し。私はそれを行う方法がわかりません、最初の呼び出しを取り除くと、コードブレークはコレクションで初期化されていないエラーです。 ExecuteQueryを1つだけ持つようにこのコードを変更する方法はありますか?私のコードは以下の通りです。ありがとう。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()は必須です。

ExecuteQuery()は、データをフェッチするためのサーバーへのラウンドトリップと考えてください。絶対に必要な場所で使用する必要があります。

thisのベストプラクティス4を確認してください。

+0

ありがとう@NLV、それは参考になり、混乱を解消します。 – Gavin

関連する問題