Я работаю с проектом ASP. NET Core Web Api, который использует OData для открытых конечных точек и использует Simple.OData.Client .
Некоторые из моих конечных точек:
http://{baseUrl}/odata/Vehicle
-> это отлично работает
Но у меня проблемы с этими двумя:
http://{baseUrl}/odata/Vehicle/Brand
http://{baseUrl}/odata/Vehicle/Type
По сути, я не могу изменять свои модели EDM для изменения свойства URL, которое отображается в метаданных OData. Мой 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"
}
]
}
Я не смог найти способ сохранить имя как есть, но измените свойство «url», показанное на JSON, чтобы оно указывало на мою правильную конечную точку. Мне нужен такой результат:
{
"name": "VehicleBrand",
"kind": "EntitySet",
"url": "Vehicle/Brand"
}
Любой из методов, представленных в EntitySetConfiguration
или ODataConventionModelBuilder
, похоже, имеет способ указать другой URI для зарегистрированного типа объекта.
Кто-нибудь сталкивался с этой проблемой? Я уверен, что это может быть способ решить эту проблему.