【发布时间】:2020-01-04 15:25:19
【问题描述】:
我有以下 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;
}
我能够在 ASP.NET MVC 中以 http://url.base/api/referee/rankingreport 的形式查询此端点并获得所有结果。如果需要,我会在 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 路由,因为我不需要或不想要它。
要让这个按预期返回结果列表或记录,我缺少什么?
【问题讨论】:
标签: odata asp.net-core-webapi .net-core-3.1