大家好,
我需要Get()方法 [EnableQuery(MaxExpansionDepth = 3)] 中的设置来限制OData查询中的扩展深度。
我尝试在Get()方法中设置此属性,但它不起作用。
您能否就此给我一个建议?
按照:https://github.com/OData/odata.net
非常感谢
答案 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){ }