ASP.NET Core 2, маршрутизация атрибутов OData v4

Можно ли достичь следующих маршрутов, используя asp.net core 2, web api, odata v4.

  • / OData / контроллер / продукта /
  • / OData / контроллер / продукта /{параметр}/
  • / OData / контроллер / продукт /{}/ пары пользователей
  • / OData / контроллер / продукт /{}/ пары компании
  • / OData / контроллер / продукт / Компания /{} пары

С помощью атрибута маршрутизации, объявления функций и настройки маршрутов?

1 ответ

Решение

После долгого эксперимента с использованием атрибутов маршрутизации, функций и действий, вышеупомянутое может быть достигнуто с помощью функций OData.

Ниже приведен код для этого.

ODataConventionModelBuilder builder = new ODataConventionModelBuilder();

builder.EntitySet<Product>("Product");
builder.EntityType<Product>().Function("Users").Returns<Users>();
builder.EntityType<Product>().Function("Companies").Returns<Companies>();

app.UseMvc(routebuilder =>
{
     routebuilder.MapODataServiceRoute( "OData", "odata", GetEdmModel());
     routebuilder.EnableDependencyInjection();
}

См. Ниже для большего понимания.

https://docs.microsoft.com/en-us/aspnet/web-api/overview/odata-support-in-aspnet-web-api/odata-v4/odata-actions-and-functions

Я также смог добиться этого, используя только атрибутную маршрутизацию.

app.UseMvc(b =>
{
    b.MapODataServiceRoute("odata", "api/v1", GetEdmModel());
});

В контроллере:

using Microsoft.AspNet.OData.Routing;

[EnableQuery]
[ODataRoute("content/{contentId}")]
public IActionResult Get(string contentId)
Другие вопросы по тегам