OData异常已超出Top查询的限制"0"

Abd*_*mon 17 c# odata asp.net-web-api-odata ignite

我正在使用OData Web API for Version 4,当我尝试使用$top参数查询OData web Api时,它会返回以下异常消息.

URI中指定的查询无效.已超出Top查询的限制"0".传入请求的值为"10"

我使用Apache Ignite dotNet LINQ作为数据源而不是Entity Framework,我的OData控制器操作方法如下:

[EnableQuery]
public IQueryable<Productioncurvepnl> GetProductioncurvepnl()
{
    Console.WriteLine("Starting query to ignite");
    var q = AIgniteClient.IgniteClient.Instance.ProductionCurvePnLCache.AsCacheQueryable().Select(c => c.Value);
    return q;
}
Run Code Online (Sandbox Code Playgroud)

ogr*_*rim 46

因为Web API OData V6.0.0您需要启用查询选项才能使其工作.这可以在全球范围内完成WebApiConfig.Register(HttpConfiguration config)

config.Select().Expand().Filter().OrderBy().MaxTop(null).Count();
Run Code Online (Sandbox Code Playgroud)

或直接在您的模型上,进行细粒度配置:

[Page(MaxTop = 100)]
public class Products
Run Code Online (Sandbox Code Playgroud)

如果您使用的是Model Bound Fluent API且无法添加属性,则需要附加查询选项.例如.Page(50, 50):

 builder.EntitySet<AccountRecordDto>("Accounts").EntityType.Expand(1, 
 "Transactions").Count().Page(50, 50);
Run Code Online (Sandbox Code Playgroud)

更多细节可以在文档中找到

  • 为`config.Select()`工作添加`使用System.Web.OData.Extensions;`希望帮助某人. (3认同)

jt0*_*t03 5

在 Startup.cs 中添加以下内容对我有用

config.Select().Expand().Filter().OrderBy().MaxTop(null).Count();
Run Code Online (Sandbox Code Playgroud)