$ expand и $ count в odata v4

#api #asp.net-web-api #odata

#API #asp.net-веб-api #odata

Вопрос:

Я пытаюсь расширить дочернюю сущность в сущности, но получаю следующую ошибку: 400 Неверный запрос

Параметр запроса ‘Expand’ не разрешен. Чтобы разрешить это, установите свойство ‘AllowedQueryOptions’ в QueryableAttribute или QueryValidationSettings.

Я установил [EnableQuery(AllowedQueryOptions = AllowedQueryOptions.All)] это свойство, но безуспешно, а затем также выдал ту же ошибку.

Вот мой URI :

 localhost/OData/Ticket?$expand=Location
  

Я также пытаюсь получить количество записей, но подсчет также не работает для меня.Вот мой URI для подсчета.

  localhost/OData/Ticket?$count=true
  

Но здесь также я получаю ошибку 400 Bad request со следующим сообщением :

Параметр запроса ‘$count’ не поддерживается.

Я много искал в Google и нашел некоторые связанные с этим проблемы, но они не работают для меня. Вот мой код:

  • Контроллер :

    открытый класс ODataTicketController: ODataController

    {

     [ODataRoute]
    
    [EnableQuery(AllowedQueryOptions = AllowedQueryOptions.All)]
    
    public IQueryable<Ticket> Get()
    {
          return db.Tickets;
    }
      

    }

  • Пожалуйста, помогите решить эту проблему.

Спасибо.

Ответ №1:

Наконец-то все запросы odata работают на моем контроллере. Просто нужен IQueryable для IHttpActionResult. Теперь он работает нормально. Вот обновленный контроллер.

 public class ODataTicketController : ODataController
{      
   [EnableQuery]       
   public IHttpActionResult<Ticket> Get()
   {
      var result = db.Tickets;      
      return Ok(result);
  }
}
  

Надеюсь, это кому-то поможет.

Спасибо.