我具有以下Api端点:
[EnableQuery()]
[Route("rankingreport", Name = "GetRankingReport")]
public IQueryable<RefereeRankingReport> GetRankingReport()
{
var data = (from r in _context.RefereeRankings
join m in _context.Referees on r.RefereeId equals m.ID
join mg in _context.RefereeGradings on r.GradingId equals mg.ID
select new RefereeRankingReport
{
...
})
.AsNoTracking();
return data;
}
我能够像http://url.base/api/referee/rankingreport
这样在ASP.NET MVC中查询此端点,并获得了所有结果。如果需要,我然后在URL上添加odata过滤器等以过滤数据。 http://url.base/api/referee/rankingreport?$filter=GradingId eq 5&$orderby=GradingId,Ranking
但是我正忙于升级到.net core 3.1,并看到一个异常,该异常将始终以SingleOrDetault返回结果。我不知道为什么要这样做,因为该方法显然返回了IQueryable。
在启动时,我已经声明了这一点:
services.AddOData();
...
app.UseMvc(routeBuilder =>
{
routeBuilder.EnableDependencyInjection();
routeBuilder.Count().Filter().OrderBy().Expand().Select().MaxTop(null);
});
我没有定义odata路由,因为我不需要或想要它。
我想让它返回预期的结果列表或记录,我缺少什么?