/// <summary> /// Executes batch operations. /// </summary> /// <param name="entities">List of entities.</param> /// <param name="operation">Table operation.</param> /// <returns>Result entities.</returns> public override IEnumerable <T> ExecuteBatches(IEnumerable <T> entities, Func <ITableEntity, TableOperation> operation) { if (entities == null) { throw new ArgumentNullException("entities"); } if (operation == null) { throw new ArgumentNullException("operation"); } IEnumerable <ITableEntity> tableEntities = entities.Select(p => _entityConverter.GetEntity(p)); IEnumerable <TableBatchOperation> batches = _partitioner.GetBatches(tableEntities, operation); return(from batch in batches from result in _cloudTable.ExecuteBatch(batch) select _entityConverter.GetEntity((DynamicTableEntity)result.Result)); }
/// <summary> /// Executes batch operations. /// </summary> /// <param name="entities">List of entities.</param> /// <param name="operation">Table operation.</param> /// <returns>Result entities.</returns> public override IEnumerable <T> ExecuteBatches(IEnumerable <T> entities, Func <ITableEntity, TableOperation> operation) { if (entities == null) { throw new ArgumentNullException(nameof(entities)); } if (operation == null) { throw new ArgumentNullException(nameof(operation)); } IEnumerable <ITableEntity> tableEntities = entities.Select(p => _entityConverter.GetEntity(p)); IEnumerable <TableBatchOperation> batches = _partitioner.GetBatches(tableEntities, operation); // Force evaluation of the execution by calling ToArray() var results = batches.SelectMany(t => _cloudTable.ExecuteBatch(t)).ToArray(); return(results.Select(t => _entityConverter.GetEntity((DynamicTableEntity)t.Result))); }
/// <summary> /// Retrieves & convert entities from cloud table. /// </summary> /// <param name="batch">Batch operation.</param> /// <returns>Result entities.</returns> private IEnumerable <T> GetEntities(TableBatchOperation batch) { return(_cloudTable .ExecuteBatch(batch) .Select(p => _entityConverter.GetEntity((DynamicTableEntity)p.Result))); }