В настоящее время у меня есть C# WebAPI, который использует версию OData, которую мы написали. Мы хотим начать использовать OData4 от Microsoft, который может сделать больше, чем наша пользовательская реализация.C# OData4 Применить запрос OData без возврата контроллера Queryable
Создание контроллера, который расширяет ODataController. Я могу создать контроллер, который автоматически запрашивает на основе строки запроса. (Показано ниже)
Проблема в том, что он возвращает результаты запроса, когда я хочу, чтобы он возвращал объект Result
, который включает в себя дополнительные данные. Когда я устанавливаю возвращаемый тип в Result, но он больше не будет применять строку запроса.
Как я могу использовать автоматическую реализацию запроса и все еще возвращать свой собственный объект? Я попытался сделать общедоступный метод, который возвращает правильный объект и вызывает частный метод, возвращающий запрос, но он не фильтрует запрос правильно.
Я нахожусь на правильном пути или есть другие варианты?
public class CallController : ODataController
{
[EnableQuery]
public IQueryable<Call> GetCall()
{
var list = new List<Call>
{
new Call
{
Id = 4
},
new Call
{
Id = 9
},
new Call
{
Id = 1
}
};
return list.AsQueryable();
}
}
public class Call
{
public int Id { get; set; }
}
public class Result
{
public Call[] Calls { get; set; }
public string NewToken { get; set; }
public string Warning { get; set; }
}