Tôi đang sử dụng ra khỏi ValuesController hộp trong một ứng dụng API ASP.NET WebWeb API OData Inlinecount không làm việc
public class ValuesController : ApiController
{
// GET api/values
[Queryable(PageSize = 1)]
public IQueryable<string> Get()
{
return new string[] { "value1", "value2", "value3", "value4", "value5" }.AsQueryable();
}
}
Khi tôi get http://localhost/api/values?$inlinecount=allpages
Đây là phản ứng
<ArrayOfString xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<string>value1</string>
</ArrayOfString>
Tôi có uncommented config.EnableQuerySupport();
Lọc, sắp xếp ng làm việc tốt.
Nếu tôi cố gắng get http://localhost/api/values?$inlinecount=XXXXX
tôi nhận được một ngoại lệ, vì vậy có vẻ như các ứng dụng Web API biết về 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>
Tôi chắc chắn có gói Microsoft.AspNet.WebApi.OData - đây là sản phẩm của các gói Bảng điều khiển quản lý
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'.
Mọi đề xuất?
Từ đọc tài liệu MS trên http://www.asp.net/web-api/overview/odata-support-in-aspnet-web-api/supporting-odata-query-options này, có vẻ như nó nên làm việc ra khỏi hộp, như lọc và phân loại? – tom
Tài liệu sai trong trường hợp này. Sự khác biệt là việc lọc không cần phải thay đổi "hình dạng" của dữ liệu, nhưng thêm số nội tuyến và liên kết trang tiếp theo sẽ làm. Vì vậy, lọc hoạt động ra khỏi hộp cho các trình định dạng khác, nhưng $ inlinecount thì không. –
Hãy xem breezejs.com. Phiên bản mới nhất hoạt động với tất cả cú pháp MS OData và tất cả các hỗ trợ inlinecount, chọn và mở rộng. –