【发布时间】:2020-10-06 13:16:55
【问题描述】:
我正在处理一个 ASP.NET Core Web Api 项目,该项目使用 OData 作为公开的端点,并与 Simple.OData.Client 一起使用。
我的一些端点是:
http://{baseUrl}/odata/Vehicle --> 完美运行
但是我遇到了这两个问题:
http://{baseUrl}/odata/Vehicle/Brand
http://{baseUrl}/odata/Vehicle/Type
基本上,我无法修改我的 EDM 模型来修改 OData 元数据中公开的 URL 属性。我的 EDM 如下所示:
private IEdmModel GetEdmModel()
{
var odataBuilder = new ODataConventionModelBuilder();
odataBuilder.EntitySet<Vehicle>("Vehicle");
odataBuilder.EntitySet<VehicleType>("VehicleType");
odataBuilder.EntitySet<VehicleBrand>("VehicleBrand");
return odataBuilder.GetEdmModel();
}
当我浏览http://{baseUrl}/odata/ 时获得的元数据如下:
{
"@odata.context": "https://localhost:44332/odata/$metadata",
"value": [
{
"name": "Vehicle",
"kind": "EntitySet",
"url": "Vehicle"
},
{
"name": "VehicleType",
"kind": "EntitySet",
"url": "VehicleType"
},
{
"name": "VehicleBrand",
"kind": "EntitySet",
"url": "VehicleBrand"
}
]
}
我找不到保持名称不变的方法,但修改 JSON 上显示的“url”属性以指向我正确的端点。我想要这个结果:
{
"name": "VehicleBrand",
"kind": "EntitySet",
"url": "Vehicle/Brand"
}
EntitySetConfiguration 或 ODataConventionModelBuilder 上公开的任何方法似乎都可以为已注册的实体类型指定不同的 URI。
有人遇到过这个问题吗?我相信这可能是解决这个问题的某种方法。
【问题讨论】:
标签: asp.net-core odata simple.odata.client