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){ }