Я работаю над созданием контроллера 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 и как правильно делать кастинг?