如何针对OData开放类型实体的嵌套动态属性进行筛选?
OData开放类型实体的Filter属性引用问题
你给出的Filter写法是完全正确的,符合OData V4的规范要求。
开放类型的核心特性
你的myEntity是标记了OpenType="true"的开放类型实体,这类实体允许在实例中包含元数据定义之外的动态属性——包括像示例里location这种嵌套的复杂类型属性。
动态嵌套属性的Filter引用方式
在OData V4的Filter语法中,使用**斜杠/**导航嵌套属性是标准用法,所以你写的location/country可以正确定位到嵌套在location里的country属性。
你构造的请求URL:
foo.net/items?$filter=location/country ne null and location/country eq 'USA'
逻辑也很严谨:先判断location/country不为空,再校验其值等于USA,避免了因location本身为空导致的引用错误,完全符合OData V4的ABNF规范。
附相关定义与实例
实体元数据定义:
<EntityType Name="myEntity" OpenType="true"> <Key> <PropertyRef Name="name" /> </Key> <Property Name="name" Type="string" /> </EntityType>
实体实例示例:
{ "name": "foo", "location": { "country": "USA" } }
内容的提问来源于stack exchange,提问作者hpatel
相关产品推荐
相关产品推荐

