Контроллер OData не возвращает сущности - PullRequest
0 голосов
/ 21 сентября 2018

В настоящее время я реализую OData с ASP.NET Zero.Я следовал инструкциям в документации, но всегда получал пустой ответ.

Это мой модуль веб-API PreInitialize код:

public override void PreInitialize()
{
    var builder = Configuration.Modules.AbpWebApiOData().ODataModelBuilder;

    // Configure your entities here...
    builder.EntitySet<Author>("Authors");
}

, который я создалконтроллер OData для авторов и переопределил метод Get:

public class AuthorsController : AbpODataEntityController<Author, long>, ITransientDependency
{
    private readonly IRepository<Author, long> _repository;
    public AuthorsController(IRepository<Author, long> repository) : base(repository)
    {
        _repository = repository;
    }

    [EnableQuery]
    [UnitOfWork(IsDisabled = true)]
    public override IQueryable<Author> Get()
    {
        return _repository.GetAll();
    }

    [EnableQuery]
    public override SingleResult<Author> Get([FromODataUri] long key)
    {
        return new SingleResult<Author>(_repository.GetAll().Where(x=>x.Id==key));
    }
}

После перехода по URL http://localhost:6235/odata/Authors, я вижу только пустой массив для value в ответе OData:

{"@odata.context":"http://localhost:6235/odata/$metadata#Jobs","value":[]}

1 Ответ

0 голосов
/ 24 сентября 2018

Вероятно, проблема с фильтром данных.

  1. Добавить запись в контекст БД и проверить запрос.

      // In the constructor
      Database.Log = (s) => System.Diagnostics.Debug.WriteLine(s);
    
  2. Проверить наличиепользовательская область и пользовательские перехватчики, которые могут устанавливать параметры для ваших фильтров данных.

...