Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/263.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# OData例外'的限制;0';已超出了for Top查询_C#_Odata_Ignite_Asp.net Web Api Odata - Fatal编程技术网

C# OData例外'的限制;0';已超出了for Top查询

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() {

我正在为版本4使用OData Web API,当我尝试使用
$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)
for
config.Select()
来使用System.Web.OData.Extensions添加
希望帮助某人。