Синхронное разбиение на страницы для хранилища таблиц Azure - PullRequest
0 голосов
/ 30 июня 2011

Я новичок в работе с хранилищем таблицы Azure, но у меня есть возможность собрать приведенный ниже код, который успешно позволяет моему запросу принять filterQuery (строку), заданную пользователем - например: (Amount le 5000.00) -и извлечь все строки (объекты), соответствующие критериям.

Dim sBuilder As New System.Text.StringBuilder
Dim query = MyBase.CreateQuery(Of cData)("CustomerData")
Dim userQuery = String.Format("(PartitionKey eq '{0}' and {1})", AppID, filterQuery)
sBuilder.AppendFormat(userQuery)
        query = query.AddQueryOption("$filter", sBuilder.ToString).AsTableServiceQuery().Take(50)
Dim results As List(Of cData) = query.Execute.ToList

Я должен указать, что этот способ предоставления пользователю возможности указать строку фильтра является ключевым для меня, поскольку я использую универсальный класс, в котором есть словарь, чтобы позволить своему вызывающемупередать любое количество элементов для хранения в данном объекте.Таким образом, это решение позволяет пользователю определять, как он хочет выполнить поиск по своему запросу, и мой код не должен ничего знать о его настраиваемых полях.

Теперь мне нужно добавить нумерацию страниц.Насколько я понимаю, метод «Выполнить», который я использую, обрабатывает разбиение на страницы для вас, поэтому, если существует 7 000 записей, соответствующих критериям, мой код будет работать до тех пор, пока все записи не будут получены / возвращены.Однако вместо этого я хочу позволить своему пользователю указать, сколько объектов он хочет вернуть за раз (максимальное количество результатов), и позволить ему затем совершать последующие вызовы, используя токены продолжения, чтобы получить следующий «пакет» соответствующих сущностей.

Есть мысли о том, как я могу достичь этого, не теряя своей способности позволить пользователю указывать свои критерии поиска в простой строке?

Ответы [ 2 ]

0 голосов
/ 01 июля 2011

Возможно, вы захотите реализовать свой запрос с помощью REST API (http://msdn.microsoft.com/en-us/library/dd179421.aspx).. Вы получите ответ XML от службы хранения, которую вы можете проанализировать для создания коллекции объектов.

0 голосов
/ 01 июля 2011

Я думаю, что вы можете просто сделать query.EndExecuteSegmented (query.BeginExecuteSegmented (...))

Проверьте код для SmarxToDo: http://blog.smarx.com/posts/todo-list-app-using-asp-net-mvc-and-windows-azure-tables

...