c# - 服务器返回对象的普通列表而不是 ODATA 信封
问题描述
我已经在我的应用程序中实现了 ODATA 配置。一切似乎都很好,一些 ODATA 运算符,如 Filter、Select、Top 工作,但结果只是对象的普通列表,而不是格式化的 odata。这就是为什么像 $count 这样的一些运算符不起作用的原因。
这是我的Startup
课
public void ConfigureServices(IServiceCollection services)
{
services.AddMvc(x => x.EnableEndpointRouting = false).SetCompatibilityVersion(CompatibilityVersion.Version_2_2);
services.AddOData();
}
public void Configure(IApplicationBuilder app, IHostingEnvironment env)
{
IEdmModel model = GetEdmModel(app.ApplicationServices);
app.UseMvc(route =>
{
route.Expand().Select().Filter().OrderBy().MaxTop(null).Count();
route.EnableDependencyInjection();
route.MapODataServiceRoute("ODataRoute", "odata", model);
route.MapRoute("default", "api/{controller}/{action}");
});
}
private static IEdmModel GetEdmModel(IServiceProvider serviceProvider)
{
var builder = new ODataConventionModelBuilder(serviceProvider);
builder.EntitySet<Models.Customer>("Customers");
return builder.GetEdmModel();
}
HomeController
这是我在课堂上的行动方法
[EnableQuery]
public IQueryable GetList()
{
MyContext db = new MyContext();
return db.Customers;
}
请求.../odata/Customers
返回 404 未找到。
请求.../api/Home/GetList?$top=2&$select=id,name&$count=true
返回此 JSON:
[
{
"Id": 748885,
"Name": "VALERİY ŞAMƏMMƏDOVİÇ ŞİRİNOV"
},
{
"Id": 748886,
"Name": "VAQİF ƏBÜLFƏT MƏMMƏDOV"
}
]
但预期的结果是:
{
"@odata.context": "http://localhost:60071/odata/$metadata",
"@odata.count": 123,
"value": [
{
"Id": 748885,
"Name": "VALERİY ŞAMƏMMƏDOVİÇ ŞİRİNOV"
},
{
"Id": 748886,
"Name": "VAQİF ƏBÜLFƏT MƏMMƏDOV"
}
]
}
解决方案
推荐阅读
- reactjs - 使用 React 测试库测试 Material-UI 菜单组件的预期方法是什么?
- amazon-web-services - 如何在内部验证 QLDB 完成的加密?
- haskell - 在 cabal.project.local 文件中设置每个组件的选项
- java - 关于java方法递归返回的问题
- android - 如何防止破坏碎片
- php - Guzzle 从响应对象中检索 form_params
- javascript - 如何查看外部 JS 文件的 console.logs?
- wordpress - 在 Wordpress 中的 Twig 中设置 if/ifelse 变量
- performance - 展开 1 周期循环会使 Skylake 的性能降低 25%。uops调度问题?
- r - 识别 R 中的日期时间格式