Я использую из коробки ValuesController в приложении Web API ASP.NETWeb API OData Inlinecount не работает
public class ValuesController : ApiController
{
// GET api/values
[Queryable(PageSize = 1)]
public IQueryable<string> Get()
{
return new string[] { "value1", "value2", "value3", "value4", "value5" }.AsQueryable();
}
}
Когда я get http://localhost/api/values?$inlinecount=allpages
Это ответ
<ArrayOfString xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<string>value1</string>
</ArrayOfString>
Я раскопан config.EnableQuerySupport();
Фильтровать, отсортировать ng работать нормально.
Если я пытаюсь get http://localhost/api/values?$inlinecount=XXXXX
я получаю исключение, так что кажется, приложение Web API знает о inlinecount
<Message>The query specified in the URI is not valid.</Message>
<ExceptionMessage>'xxx' is not a valid value for $inlinecount.</ExceptionMessage>
<ExceptionType>Microsoft.Data.OData.ODataException</ExceptionType>
Я определенно есть пакет Microsoft.AspNet.WebApi.OData - вот выход пакета Консоль менеджера
PM> Install-Package Microsoft.AspNet.WebApi.OData
Attempting to resolve dependency 'Microsoft.Net.Http (= 2.0.20710.0 && < 2.1)'.
Attempting to resolve dependency 'Microsoft.AspNet.WebApi.Client (= 4.0.20710.0 && < 4.1)'.
Attempting to resolve dependency 'Newtonsoft.Json (= 4.5.6)'.
Attempting to resolve dependency 'Microsoft.AspNet.WebApi.Core (= 4.0.20710.0 && < 4.1)'.
Attempting to resolve dependency 'Microsoft.Data.OData (= 5.2.0 && < 5.3.0)'.
Attempting to resolve dependency 'System.Spatial (= 5.2.0)'.
Attempting to resolve dependency 'Microsoft.Data.Edm (= 5.2.0)'.
'Microsoft.AspNet.WebApi.OData 4.0.0' already installed.
WebServicesProject already has a reference to 'Microsoft.AspNet.WebApi.OData 4.0.0'.
Любые предложения?
От чтения документов MS на этом http://www.asp.net/web-api/overview/odata-support-in-aspnet-web-api/supporting-odata-query-options это похоже на должен работать из коробки, например, для фильтрации и сортировки? – tom
Документ ошибочен в этом случае. Разница в том, что фильтрация не требует изменения «формы» данных, но добавление количества строк и ссылки на следующую страницу. Поэтому фильтрация работает из коробки для других форматировщиков, но $ inlinecount этого не делает. –
Взгляните на breezejs.com. Последняя версия работает со всем синтаксисом MS OData, и все поддерживают inlinecount, выбирают и расширяют. –