C# OData例外'的限制;0';已超出了for Top查询
我正在为版本4使用OData Web API,当我尝试使用C# OData例外'的限制;0';已超出了for Top查询,c#,odata,ignite,asp.net-web-api-odata,C#,Odata,Ignite,Asp.net Web Api Odata,我正在为版本4使用OData Web API,当我尝试使用$top参数查询OData Web API时,它会返回以下异常消息 URI中指定的查询无效。已超过Top查询的“0”限制。传入请求的值为“10” 我使用Apache Ignite dotNet LINQ作为数据源,而不是实体框架,我的OData控制器操作方法如下: [EnableQuery] public IQueryable<Productioncurvepnl> GetProductioncurvepnl() {
$top
参数查询OData Web API时,它会返回以下异常消息
URI中指定的查询无效。已超过Top查询的“0”限制。传入请求的值为“10”
我使用Apache Ignite dotNet LINQ作为数据源,而不是实体框架,我的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;
}
[启用查询]
公共IQueryable GetProductioncurvepnl()
{
Console.WriteLine(“启动点火查询”);
var q=AIgniteClient.IgniteClient.Instance.ProductionCurvePnLCache.AsCacheQueryable().Select(c=>c.Value);
返回q;
}
根据返回的错误消息,问题很可能是未定义MaxTop
。您可以在方法上使用EnableQueryAttribute
这样做(根据需要更改值),我使用的值是100
[EnableQuery(MaxTop = 100)]
public IQueryable<Productioncurvepnl> GetProductioncurvepnl()
{
Console.WriteLine("Starting query to ignite");
var q = AIgniteClient.IgniteClient.Instance.ProductionCurvePnLCache.AsCacheQueryable().Select(c => c.Value);
return q;
}
[启用查询(MaxTop=100)]
公共IQueryable GetProductioncurvepnl()
{
Console.WriteLine(“启动点火查询”);
var q=AIgniteClient.IgniteClient.Instance.ProductionCurvePnLCache.AsCacheQueryable().Select(c=>c.Value);
返回q;
}
有关更多详细信息,请参阅。对于我来说,[EnableQuery(Max Top=100)]不工作,但[Queryable]工作正常。[EnableQuery(Max Top=100)]应该可以工作,但不知道为什么不能工作。有人知道,那么请让我知道。但现在我使用的是[Queryable]。因为
Web API OData V6.0.0
您需要启用查询选项才能完成此工作。
这可以在WebApiConfig.Register(HttpConfiguration-config)
config.Select().Expand().Filter().OrderBy().MaxTop(null.Count());
或者直接在您的模型上,对于细粒度配置:
[第页(MaxTop=100)]
公共类产品
如果正在使用并且无法添加属性,则需要附加查询选项。例如.Page(50,50)
:
builder.EntitySet在Startup.cs中添加下面的内容对我很有用
config.Select().Expand().Filter().OrderBy().MaxTop(null).Count();
请在问题中包含您正在使用的完整URL。Queryable已被弃用,我已发布了两种方法的答案。如果对EntityType应用了限制,例如:builder.EntitySet(“Accounts”).EntityType.Expand(1,“Transactions”).Count(),则这两种方法都不起作用
在这种情况下,我需要将.Page(50,50)添加到EntityType。@ogrim既不适用于asp core,也不适用于asp core,因为asp core没有WebApiConfig.Register(HttpConfiguration config)
forconfig.Select()
来使用System.Web.OData.Extensions添加代码>希望帮助某人。