微软最近发布了WCF Data Services 5.2.0,支持ODataLib Contrib中的UriParser,后者支持将$filter和$orderby表达式解析为一个绑定元数据的抽象语法树。该语法树通常用于级别更高的库,如WCF Data Services和Web API。
要解析一个过滤表达式,需要使用ParseFilter()方法。该方法返回一个FilterClause对象,并包含以下四个参数:
public static FilterClause ParseFilter(string filter, IEdmModel model, IEdmType elementType, IEdmEntitySet entitySet)
FilterClause的Expression属性包含表示该过滤表达式的抽象语法树的根节点。可以使用Kind属性和一个简单的switch-case程序来分析这些节点。
要解析一个排序(Orderby)表达式,必须使用与ParseFilter()方法十分类似的ODataUriParser.ParseOrderBy方法,微软的项目经理Alex D James在其博客文章中详细介绍了使用ODataUriParser解析$filter和$orderby的功能。
WCF Data Services 5.2.0修复了为十分庞大的模型生成代码时会导致Visual Studio崩溃的bug。此外,还解决了使用新JSON格式时IgnoreMissingProperties不能正确工作,以及客户端被设置为使用新JSON格式时不能读取Atom响应的问题。在服务模型暴露了枚举属性的情况下,新版本还能提供更好的错误消息。
“我们在改善WCF Data Services的整体稳定性和性能方面付出了一些努力,我们还将在后续几个发布版本中继续提供增强功能”,微软SQL Connectivity小组的dpblogs说。
WCF Data Services 5.2.0可通过如下格式获取:
“WCF Data Services包含很多新的特性,可能无法向后兼容Visual Studio 2012和LightSwitch。OData 5.0存在一个拒绝服务的漏洞,最近新发布的5.0二进制版本解决了这个问题。”微软Visual Studio产品小组的Matt Evans说。