Breeze.net: примените фильтры ODATA до возвращения конечной точки - PullRequest
0 голосов
/ 01 июня 2018

Я использую 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 голосов
/ 01 июня 2018

Вы используете поддержку ODAP WebAPI?Если это так, я думаю, вы могли бы сделать что-то вроде этого:

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;
}
...