7

次のコードを実行すると、このエラーが発生しました。

var insert = new TableBatchOperation();
foreach (var entity in entities)
{
    insert.Insert(entity);
}
cloudTable.ExecuteBatch(insert);  

エンティティ コレクションには 512 個の要素が含まれていました。StorageException を介した Azure SDK:

"Unexpected response code for operation : 99" 

このエラーは何を意味し、どうすれば解決できますか?

4

2 に答える 2

18

この説明のつかないエラーは、Azure の一括操作 (少なくともこの場合)が最大 100 個の要素を必要とすることを意味します。バッチを制限すると、うまくいきます。

私はこのようなものを使用して終了しました:

public void Insert(IEnumerable<T> entities)
{
    foreach (var chunk in entities.Chunk(100))
    {
        InsertMaxLimitElements(chunk);
    }
}

private void InsertMaxLimitElements(IEnumerable<T> chunk)
{
    var insert = new TableBatchOperation();

    foreach (var entity in chunk)
    {
        insert.Insert(entity);
    }
    cloudTable.ExecuteBatch(insert);
}

チャンク拡張メソッドは、この回答からコピーされました:

public static IEnumerable<IEnumerable<T>> Chunk<T>(this IEnumerable<T> source, int chunksize)
{
    while (source.Any())
    {
        yield return source.Take(chunksize);
        source = source.Skip(chunksize);
    }
}
于 2013-08-11T10:20:16.380 に答える