Breeze.net:在端点返回之前应用ODATA过滤器

时间:2018-06-01 13:48:40

标签: c# nhibernate odata breeze

我使用breeze.net来处理ODATA查询。这是我的终点:

public IQueryable<Car> Cars()
{
  IQueryable<Car> cars = this.context.Cars.Where(x => x.Color == "Blue");

  return cars;
}

如果从客户端传递过滤器或分页,则在上述方法返回时,它们将正确应用于IQueryable。

但是我想在它返回之前应用它们,因为我想调用ToList()并对数据进行一些处理:

public IQueryable<Car> Cars()
{
  IQueryable<Car> cars = this.context.Cars.Where(x => x.Color == "Blue");

  var myCars = cars.ToList()

// do stuff

  return cars.AsQueryable();
}

显然上述工作,但没有应用从客户端传递的过滤器/分页。有没有办法实现这个目标? (仅供参考我使用NHibernate所以NHContext,而不是EntityFramework)

1 个答案:

答案 0 :(得分:0)

您使用的是WebAPI OData支持吗?如果是这种情况,我认为你可以沿着这些方向做点什么:

public virtual IEnumerable<Car> YourGetCarsWebApiEndpoint(ODataQueryOptions<Car> options)
{
    var queryable = yourCarsRepository.Cars();

    // Explicitly apply OData options to queryable:
    queryable = (IQueryable<Car>)options.ApplyTo(queryable);

    var cars = queryable.ToList();

    // Do stuff:

    return cars;
}