OData v4.0 如何设置MaxExpansionDepth?

OData v4.0 How to set MaxExpansionDepth?


大家好,

你能给我一个建议吗?

关注:https://github.com/OData/odata.net

非常感谢

[EnableQuery(MaxExpansionDepth = 4)]
public IQueryable<abc> Get() 
{
    return GetAQueryable<abc>();
}

在您的方法名称之前添加它。

在我的例子中,我需要在创建 edm 模型时设置实体中的最大扩展深度。

在启动时,您配置路线和模型:

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

在您的提供商中:

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

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

        return builder.Build();
    }

然后,在您的控制器中,您可以覆盖最大深度值,只要它小于实体配置中定义的最大值即可:

[HttpGet]
[EnableQuery(AllowedQueryOptions = AllowedQueryOptions.All, MaxExpansionDepth = 2)]
public SingleResult<Object> Get(Guid key){ }