OData v4.0如何设置MaxExpansionDepth?

时间:2016-09-19 11:01:25

标签: .net asp.net-web-api odata expansion

大家好,

  • 我需要Get()方法 [EnableQuery(MaxExpansionDepth = 3)] 中的设置来限制OData查询中的扩展深度。

  • 我尝试在Get()方法中设置此属性,但它不起作用。

您能否就此给我一个建议?

按照:https://github.com/OData/odata.net

非常感谢

2 个答案:

答案 0 :(得分:3)

[EnableQuery(MaxExpansionDepth = 4)]

    public IQueryable<abc> Get()

{return abc}

在方法名称添加之前

答案 1 :(得分:1)

在我的情况下,创建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){ }