当前,我正在使用ASP.NET Zero实现OData。我遵循了文档中的instructions,但始终收到空的回复。
这是我的Web API模块PreInitialize
代码:
public override void PreInitialize()
{
var builder = Configuration.Modules.AbpWebApiOData().ODataModelBuilder;
// Configure your entities here...
builder.EntitySet<Author>("Authors");
}
我为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时,在OData响应中仅看到value
的空数组:
{"@odata.context":"http://localhost:6235/odata/$metadata#Jobs","value":[]}
答案 0 :(得分:0)
这可能是数据过滤器问题。
将日志记录添加到数据库上下文并检查查询。
// In the constructor
Database.Log = (s) => System.Diagnostics.Debug.WriteLine(s);
检查可能为数据过滤器设置参数的用户范围和自定义拦截器。