2013-08-11 25 views

cevap

16

Bu açıklayıcı hata, Azure toplu işlemlerinin (en azından bu durumda) 'un 100 öğeye kadar ürününü alması anlamına gelir. Toplu işini sınırla ve iyi olacaksın. Dobiş uzatma yöntemi bu answer kopyalanmıştır

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); 
} 

:

Böyle bir şey kullanarak sona erdi

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); 
    } 
} 
+2

Burada dahil etmek istiyoruz Birkaç başka şeyler - 1) Tüm varlıklar Bir işlemde aynı PartitionKey olmalıdır 2) Bir işlemdeki bir varlık yalnızca bir kez görünebilir 3) Bir varlığın maksimum boyutu 1 MB olsa da, bir toplu işin maksimum boyutu 4 MB olabilir. Bununla ilgili daha fazla bilgiyi şu adreste bulabilirsiniz: http://msdn.microsoft.com/en-us/library/windowsazure/dd894038.aspx –

İlgili konular