OData v4.0 如何设置MaxExpansionDepth?
OData v4.0 How to set MaxExpansionDepth?
大家好,
我需要在 Get() 方法中进行设置 [EnableQuery(MaxExpansionDepth=3)] 以限制 OData 查询中的扩展深度。
我试图在 Get() 方法中设置此属性,但它不起作用。
你能给我一个建议吗?
关注: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){ }
大家好,
我需要在 Get() 方法中进行设置 [EnableQuery(MaxExpansionDepth=3)] 以限制 OData 查询中的扩展深度。
我试图在 Get() 方法中设置此属性,但它不起作用。
你能给我一个建议吗?
关注: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){ }