Некоторое время я использовал Box API для подключения Acumatica ERP к Box, и до недавнего времени все шло нормально. Всякий раз, когда я пытаюсь использовать тип BoxCollection со свойством ItemCollection, я получаю только первые 100 результатов независимо от ограничения, установленного в GetInformationAsync(). Вот фрагмент кода:
[PermissionSet(SecurityAction.Assert, Name = "FullTrust")]
public BoxCollection<BoxItem> GetFolderItems(string folderId, int limit = 500, int offset = 0)
{
var response = new BoxCollection<BoxItem>();
var fieldsToGet = new List<string>() { BoxItem.FieldName, BoxItem.FieldDescription, BoxItem.FieldParent, BoxItem.FieldEtag, BoxFolder.FieldItemCollection };
response = Task.Run(() => Client.FoldersManager.GetFolderItemsAsync(folderId, limit, offset)).Result;
return response;
}
Затем я передаю эту информацию в переменную типа BoxFolder, а затем пытаюсь использовать свойство ItemCollection.Entries, но это возвращает только 100 результатов за раз, без видимого способа извлечь оставшиеся 61 (в моем случае Count = 161, но Entries = 100 всегда)
Другой фрагмент кода используемой переменной, я в основном пытаюсь получить идентификатор папки на основе имени папки внутри Box:
private static void SyncProcess(BoxFolder rootFolder, string folderName)
{
var boxFolder = rootFolder.ItemCollection.Entries.SingleOrDefault(ic => ic.Type == "folder" && ic.Name == folderName);
}
Я не смог найти ничего, связанного с этим limit = 100 в документации, и это только недавно начало доставлять мне проблемы.
Мне пришлось создать обходной путь, используя следующее:
var boxCollection = client.GetFolderItems(rootFolder.Id);
var boxFolder = boxCollection.Entries.SingleOrDefault(ic => ic.Type == "folder" && ic.Name == folderName);
Мне просто интересно, есть ли лучший способ получить полную коллекцию, используя свойство ItemCollection.Entries, как я привык, вместо того, чтобы извлекать их снова.
Спасибо!