Запретить Simple.OData.Client извлекать всю структуру - PullRequest
1 голос
/ 07 марта 2019

Я использую simple.odata.client в своем приложении. Проблема в том, что клиент извлекает всю структуру при первом вызове, который слишком велик (более 30 МБ), и поэтому я получаю таймаут? Есть ли какой-либо параметр / настройка, чтобы предотвратить получение клиентом всей структуры. Есть ли другой пакет, который может помочь мне с моим приложением вместо simple.odata.client

1 Ответ

1 голос
/ 28 марта 2019

Я использую OData Top и Skip в моем запросе клиента. Например;

    var accessToken = await _psUtils.GetUspsReferenceApiAccessToken(token);
    var client = new ODataClient(SetODataToken(_psUtils.GetBaseUspsReferenceApiUrl(), accessToken));
    var annotations = new ODataFeedAnnotations();

    addressComplianceCodes = await client.For<AddressComplianceCode>()
        .Filter(x => x.Description.Contains(searchValue) || x.Code.Contains(searchValue))
        .Top(pageSize).Skip(skip)
        .OrderByDescending(sortColumn)
        .FindEntriesAsync(annotations, token);

и в моем клиентском коде у меня есть пейджер, который отслеживает значения, которые я передаю наверх, и пропускаю, чтобы я мог просматривать страницы. Вверху указано общее количество записей на странице. Объект annotations возвращает свойство Count, которое можно использовать для отображения общего количества записей. То есть

annotations.Count

Вот ссылка на учебник OData.org , в котором говорится о top и skip.

https://github.com/simple-odata-client/Simple.OData.Client/wiki/Results-projection,-paging-and-ordering, что говорит о подкачке.

...