Отфильтровать результат от результата функции в одатате - PullRequest
0 голосов
/ 19 февраля 2020

Я работаю над созданием контроллера odata и сталкиваюсь с проблемой фильтрации фильтра результатов после вызова функции.

private IEdmModel GetCountryEdmModel()
{
    var builder = new ODataConventionModelBuilder();

    builder.EntitySet<Country>("Country");
    builder.EntityType<Country>().Function("People").ReturnsCollection<Person>();

    return builder.GetEdmModel();
}

// ...

[EnableQuery]
public IQueryable<Person> People()
{
   return _peopleService.GetAll();
}

Запрос: http://127.0.0.1/odata/country/people? $ Select = Name

Но я получаю все поля класса Person.

Поддерживают ли функции (и действия) параметры запроса, такие как $ select, $ filter, et c?

ОБНОВЛЕНИЕ

Я обнаружил, что мы можем вызывать параметры запроса напрямую К сожалению, последняя строка кода (оператор возврата) всегда равна нулю.

public IQueryable<Person> People(ODataQueryOptions opts)
{
    var people = _peopleService.GetAll();

    IQueryable results = opts.ApplyTo(people);

    return results as IQueryable<Person>; // <- returns null when i use "?$select=Name" query
}

Почему это так? null и как правильно делать кастинг?

...