【发布时间】:2015-08-06 17:46:28
【问题描述】:
我在 WebAPI 控制器中使用 MS 的 OData 3。
我的控制器如下所示:
public override IEnumerable<WorkOrderModel> Get(ODataQueryOptions<WorkOrderModel> options)
{
Int64? totalCount;
var results = _workOrders.Get(options, out totalCount);
options.ApplyTo(results.AsQueryable());
return new PageResult<WorkOrderModel>(results,
Request.ODataProperties()
.NextLink,
totalCount);
}
然后我运行这个查询:
/odata/WorkOrders?$expand=ItemSerial
我得到正确的结果,所有 WorkOrder 都会给我正确的 ItemSerial。
但是当我运行这个时:
/odata/WorkOrders?$expand=ItemSerial&$inlinecount=allpages
只有部分工作订单会有项目序列号。这不是随机的,总是相同的,但我想不出一个模式。
我必须使用ApplyTo,否则我将永远无法从 OData 获得扩展。
如果我检查var results,那么我可以看到所有结果都有一个ItemSerial,但在options.ApplyTo(results.AsQueryable()); 之后,大多数结果都设置为null。
ODataQueryOptions 中是否存在已知错误?
【问题讨论】:
标签: asp.net-web-api odata