通过 Web API 中的属性限制 OData $filter

nit*_*nms 4 c# odata asp.net-web-api

我只想允许在 OData 查询选项中使用某些属性$filter

我看到有一个AllowedOrderByProperties参数EnableQueryAttribute,但我没有找到另一个 $filter 参数。我刚刚错过了吗?如果没有,需要怎样实施?

Tom*_*erC 5

您可以尝试以下操作:

一旦有了构建器,您就可以列出实体集的属性,然后您可以提及该字段是否可过滤。

var entityTypeConfig = builder.EntitySet<SomeType>("SomeType").EntityType;
entityTypeConfig.Property(x => x.SomeField);
entityTypeConfig.Property(x => x.SomeField2).IsNotFilterable().IsNonFilterable();
// not sure what is the difference between them
Run Code Online (Sandbox Code Playgroud)

并在控制器操作(例如 httpGet)中添加

options.Filter.Validate(allowedOptions);
Run Code Online (Sandbox Code Playgroud)

如果某个字段不可过滤,则会抛出异常。