EnableQuery总是对IEnumerable result

问题描述 投票:0回答:1

我具有以下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路由,因为我不需要或想要它。

我想让它返回预期的结果列表或记录,我缺少什么?

odata asp.net-core-webapi .net-core-3.1
1个回答
1
投票
在.NET Core 3.1中-尚不支持端点路由(到目前为止),您必须在其中具有OData路由才能使用功能。
© www.soinside.com 2019 - 2024. All rights reserved.