Могу ли я запросить какой-либо атрибут в строке Windows Azure Tablestorage? - PullRequest
0 голосов
/ 08 мая 2011

Извините, если это звучит как довольно глупый вопрос, но я хотел бы сделать «выбор» для данных из таблицы Windows Azure. Я попробовал следующее, и это сработало:

from question in _statusTable.GetAll()
                       where status.RowKey.StartsWith(name)

Я тогда попробовал

from question in _statusTable.GetAll()
                       where status.Description.StartsWith(name)

Этот мне ничего не дал. Может кто-нибудь объяснить мне, если или как я могу запросить строки, которые не являются частью RowKey или PartitionKey.

Ответы [ 2 ]

3 голосов
/ 09 мая 2011

Вы можете запросить любое свойство, но типы поддерживаемых запросов ограничены - например, StartsWith не поддерживается.Кроме того, если вы не запрашиваете PartitionKey и RowKey, есть некоторые очень важные проблемы с производительностью, которые необходимо понять - и вам всегда нужно знать о ContinuationToken - почти любой результат запроса может содержать их.

Вы можете увидетьВиды запросов, поддерживаемые при просмотре REST API: http://msdn.microsoft.com/en-us/library/dd894031.aspx - это довольно ограниченный (но быстрый в результате):

  • Равен
  • GreaterThan
  • GreaterThanOrEqual
  • LessThan
  • LessThanOrEqual
  • NotEqual

Если вам нужно сделать больше, тогда:

  • вы можете имитировать такие вещи, как StartsWith("Fred"), выполнив GreaterThanOrEqualTo("Fred") and LessThan("Free")
  • или фильтрация на стороне клиента будет работать - но это означает, что нужно извлечь все строки из хранилища - это может быть много данных и которыеможет быть вычислительно и транзакционно дорого!
0 голосов
/ 09 мая 2011

Что делает GetAll ()? StartsWith не поддерживается таблицами WA, поэтому я предполагаю, что GetAll извлекает все данные локально, и поэтому ваш запрос выполняется над объектами в памяти. Если это так, то это не имеет ничего общего с Windows Azure, поэтому я хотел бы взглянуть, выглядят ли ваши данные так, как вы ожидаете.

...