Получить маршрут, используя OData и пользовательские параметры запроса - PullRequest
0 голосов
/ 30 октября 2018

У нас есть контроллер, который ожидает некоторые параметры в маршруте получения, но функции OData, такие как $top, не работают.

Согласно документам , он (пользовательские параметры запроса) должен работать нормально, просто объявляя префикс @ в пользовательских параметрах, но это не так:

  • Используя @ в качестве префикса (как предложено в документации), параметр filtro не заполняется и получает значения по умолчанию для всех его свойств.
  • Без префикса он не возвращает ошибку, но функция $top игнорируется, и я получаю слишком много записей, чтобы показать (2K +).

Здесь есть еще один ответ на SO на нечто подобное , но мы используем OData V3, у которой нет явных построителей моделей Edm, это вывод.

Ребята, вы решили такую ​​проблему?

Вот мой код:

GET Запрос:

~/ProdutosRelevantes?$top=5&
    filtro.Cnpjs[0]=00000000000001&
    filtro.DataInicio=2018-01-01&
    filtro.DataFim=2018-12-01&
    filtro.IndMercado=2&

Метод контроллера:

[HttpGet]
public IHttpActionResult ProdutosRelevantes([FromUri] ParametrosAnalise filtro)
{
    var retorno = GetService().GetProdutosRelevantes(filtro);
    return Content(HttpStatusCode.OK, retorno);
}
public class ParametrosAnalise
  {
      public Guid IdCliente { get; set; }
      public string[] Cnpjs { get; set; }
      public DateTime? DataInicio { get; set; }
      public DateTime? DataFim { get; set; }
      public EnumEscopoMercado? IndMercado { get; set; }      
      // Enum declaration
      public enum EnumEscopoMercado
      {
          [Description("INCLUI NACIONAL")]
          InternoEExterno = 1,
          [Description("EXTERIOR")]
          Externo = 2
      }
  }

Спасибо.

1 Ответ

0 голосов
/ 02 ноября 2018

Включили ли вы oData с декоратором [EnableQuery] в вашем действии? Или в вашем HttpConfiguration => config.EnableQuerySupport ()?

https://docs.microsoft.com/en-us/aspnet/web-api/overview/odata-support-in-aspnet-web-api/supporting-odata-query-options

...