【发布时间】:2020-03-09 08:39:15
【问题描述】:
使用 Hassan Habib 的 Supercharging ASP.NET Core API with OData 博客文章中的示例代码,我可以使用 $count=true 的 OData 查询获取记录数:
需要进行什么配置才能将响应对象包装在OData context 中,以便显示@odata.count 属性?
在我自己的 ASP.NET Core Web API 项目中,我无法让简单的 $count 参数工作,我不知道为什么。
使用 Hassan 的示例代码,响应 JSON 包装在 OData context 中,负载(IEnumerable<Student> 对象)位于 JSON 响应的 value 属性中。在我的项目中,OData context 包装器不存在;我的代码从不返回OData context,它只返回IEnumerable<T>类型的有效载荷对象:
我还注意到响应头中的Content-Type 在示例项目中是application/json; odata.metadata=minimal; odata.streaming=true; charset=utf-8,而在我的项目中它只是application/json; charset=utf-8。我在这两个项目中都没有看到任何控制这个的设置,所以我假设Microsoft.AspNetCore.Odata NuGet 包在正确配置时会神奇地改变响应。
我的项目也使用 .NET Core 2.2(从 2.1 升级),所有与 Hassan 示例项目相同版本的 NuGet 包,以及 StartUp.cs 类中的所有相同设置...虽然我的 StartUp.cs 是方式更复杂(因此我不在这里发布它的内容。)
【问题讨论】:
标签: c# asp.net odata asp.net-core-webapi