我正在使用一个 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 的任何方法。
有人遇到过这个问题吗?我相信这可能是解决这个问题的某种方法。