odata - 在自定义提供程序中禁用分页

时间:2013-05-23 14:38:19

标签: wcf-data-services odata

我为现有的数据引擎创建了一个OData包装层。所有操作包括:排序过滤和分页都直接传递给我现有的引擎并检索所需的数据。

问题在于分页:从我现有的引擎中检索第二页结果,但后来odata跳过“skip =”的数量并将空集合发送给客户端。例如: 我正在分页“产品”,DB中有100个。第一页获取10到服务器,跳过0并将10发送到客户端。第二页获取10到服务器,跳过10并且不向客户发送任何内容。

有解决方法吗?

P.S。 页面大小我根据客户要求而有所不同。我无法在服务器上硬编码。

1 个答案:

答案 0 :(得分:0)

我在我的代码中发现了这个方法,并添加了前两行:

public IQueryable<TElement> CreateQuery<TElement>(Expression expression)
    {
        if (expression.ToString().Contains(".Skip("))
            expression = (expression as MethodCallExpression).Arguments[0];

        return new DSPLinqQuery<TElement>(this, expression);
    }

这样,构建的较大表达式将不包含skip(10)