В настоящее время у меня есть C# WebAPI, который использует версию OData, которую мы написали. Мы хотим начать использовать Microsoft OData4, который может больше, чем наша собственная реализация.
Создание контроллера, расширяющего 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; }
}