Вот фрагмент кода, который инициализирует приложение TableBatchOperation, предназначенное для извлечения двух строк в одной партии:
TableBatchOperation batch = new TableBatchOperation();
batch.Add(TableOperation.Retrieve("somePartition", "rowKey1"));
batch.Add(TableOperation.Retrieve("somePartition", "rowKey2"));
//second call throws an ArgumentException:
//"A batch transaction with a retrieve operation cannot contain
//any other operation"
Как упоминалось, генерируется исключение, и кажется, что не поддерживается для извлечения N строк в одной партии. Для меня это очень важно, поскольку мне нужно получить около 50 строк на запрос. Эта проблема имеет такую же производительность, как и стоимость. Как вы знаете, ценообразование Azure Table Storage основано на количестве транзакций, что означает, что 50 операций по извлечению в 50 раз дороже, чем одна партия операции.
Я что-то пропустил?
Боковое примечание Я использую новый Azure Storage api 2.0. Я заметил, что этот вопрос никогда не поднимался в Интернете. Возможно, это ограничение было добавлено недавно?
изменить
Я нашел здесь связанный с этим вопрос: Очень медленный запрос на хранение в Azure Table в разделе PartitionKey/RowKey List. Похоже, что использование TableQuery с "или" в rowkeys приведет к полному сканированию таблицы. Здесь действительно серьезная проблема...