OData v4.0 Как установить MaxExpansionDepth?


Всем привет,

  • Мне нужна настройка в методе Get() [EnableQuery(MaxExpansionDepth=3)], чтобы ограничить глубину расширения в запросе OData.

  • Я пытался установить этот атрибут в методе Get(), но он не работает.

Не могли бы вы дать мне предложение для этого?

Следуйте как: https://github.com/OData/odata.net

Большое спасибо

1 ответ

[EnableQuery (MaxExpansionDepth = 4)]

    public IQueryable<abc> Get()

{return abc}

перед именем вашего метода добавьте его.

В моем случае мне нужно было установить максимальную глубину расширения в сущности при создании модели EDM.

При запуске вы настраиваете свой маршрут и свою модель:

routes.MapODataServiceRoute("odata", "odata", ODataDataSourceProvider.GetEdmModel(new ODataConventionModelBuilder()));

В вашем провайдере:

public void GetEdmModel(ODataModelBuilder builder)
    {
        builder.EntitySet<Object>("Objects");

        builder
            .EntityType<Object>()
            .Filter() // Enables filtering
            .Expand(3) // Enables expanding with maximum depth: 3
            .Select(); // Enables selecting
    }

Затем в вашем контроллере вы можете переопределить максимальное значение глубины, если оно меньше максимального значения, определенного в конфигурации объекта:

[HttpGet]
[EnableQuery(AllowedQueryOptions = AllowedQueryOptions.All, MaxExpansionDepth = 2)]
public SingleResult<Object> Get(Guid key){ }
Другие вопросы по тегам