Ada*_*ess 8 astoria wcf-data-services odata asp.net-web-api wcf-data-services-client
在Web API上的OData 4服务中,从.NET客户端调用嵌套$ expand的正确方法是什么?我们正在使用OData客户端生成器.回到之前使用OData 3服务的WCF数据服务,我们可以调用.Expand("Customers/Orders")
.在使用OData 4的Web API中,我们不能再这样做,并且如果您尝试,则会收到以下内容.Expand("Customers/Orders")
:
URI中指定的查询无效.找到遍历多个导航>属性的路径.请重新调整查询,使每个展开路径仅包含类型>段和导航属性.
我们可以通过调用expand来解决这个问题:.Expand("Customers($expand=Orders)")
.在非嵌套的$ expand场景中,我喜欢lambda支持.Expand(d => d.Customers)
..NET OData 4客户端是否有正确的方法来调用嵌套的扩展而没有不幸的魔术字符串.Expand("Customers($expand=Orders)")
?如果没有,是否有一个更清洁的字符串模式,如"客户/订单",这将有效吗?谢谢.
在OData v4中,展开多级是无效的,例如您在问题中提到的:.Expand(“Customers/Orders”)。我认为客户端不会支持这样的API。以下是 ABNF http://docs.oasis-open.org/odata/odata/v4.0/os/abnf/odata-abnf-construction-rules.txt中的内容:
expand = '$expand' EQ expandItem *( COMMA expandItem )
expandItem = STAR [ ref / OPEN levels CLOSE ]
/ expandPath
[ ref [ OPEN expandRefOption *( SEMI expandRefOption ) CLOSE ]
/ count [ OPEN expandCountOption *( SEMI expandCountOption ) CLOSE ]
/ OPEN expandOption *( SEMI expandOption ) CLOSE
]
expandPath = [ qualifiedEntityTypeName "/" ]
*( ( complexProperty / complexColProperty ) "/" [ qualifiedComplexTypeName "/" ] )
navigationProperty
[ "/" qualifiedEntityTypeName ]
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
5669 次 |
最近记录: |