WCF Data Services 5.0 中的新增功能
此版本 WCF 数据服务 完全支持以下新的 OData 3.0 版功能:
All 和 Any 运算符
OData 现支持基于集合内容来筛选源。 通过使用新的 all 和 any 运算符,可以基于相关集合的属性或多值属性来筛选 OData 源。.NET Framework 客户端库现在支持在语言集成查询 (LINQ) 查询中使用 All<TSource>(IEnumerable<TSource>, Func<TSource, Boolean>) 和 Any<TSource>(IEnumerable<TSource>) 集合运算符。 有关更多信息,请参见 LINQ 注意事项(WCF 数据服务)。
集合属性 *
OData 现在支持为数据服务的数据模型中的类型定义集合属性。 这些集合属性包含基元或复杂类型的未排序集合。命名资源流
OData 现在支持定义给定实体的命名资源流。 这样您就能够为给定实体关联多个二进制数据流。 有关更多信息,请参见流提供程序(WCF 数据服务)。.NET Framework 客户端库现在支持访问命名资源流。 有关更多信息,请参见使用二进制数据(WCF 数据服务)。
新数据类型
OData 定义了以下受 WCF 数据服务 支持的新数据类型:地理空间类型*
OData 现在支持地理空间数据类型作为新的基元集。 有关更多信息,请参见空间库。
DateTimeOffset
TimeSpan
PATCH 请求
已将一个新的 PATCH 方法添加到 HTTP 标准之中。 OData 现在支持此新的 HTTP 方法。 WCF 数据服务 以处理 MERGE 请求的相同方式来处理 PATCH 请求。.NET Framework 客户端库现在支持使用 PATCH 请求将更新发送到数据服务。 有关更多信息,请参见管理数据服务上下文(WCF 数据服务)。
首选标头支持
OData 现在支持客户端请求是否返回负载以响应 POST、PUT、MERGE 或 PATCH 请求的能力。 此客户端首选项在请求中通过首选标头的值指定。 在使用 .NET Framework 客户端时,此首选项由 DataServiceContext 管理。 有关更多信息,请参见管理数据服务上下文(WCF 数据服务)。服务动作
通过 OData,可以定义服务动作,服务动作是一种特殊服务操作。 通过服务动作可将行为注入到本来以数据为中心的模型中。 通过服务动作可调用 OData 中的业务逻辑,该逻辑必须在这里绑定到某个给定资源。 有关更多信息,请参见使用 OData 动作实现服务器端行为。词汇表注释
OData 支持通过定义词汇表来扩展数据服务元数据的能力。 通过 WCF 数据服务,可通过使用注释将词汇表应用于数据模型。 有关更多信息,请参见文章 WCF Data Services 中的词汇表。
* 实体框架提供程序目前不支持的新 OData 功能。
此版本 WCF 数据服务 提供以下附加功能:
DbContext 的实体框架提供程序支持
WCF 数据服务 现在支持使用从 DbContext 继承的类作为实体框架提供程序数据源,就像使用从 ObjectContext 继承的类一样。 DbContext 是在 Entity Framework 4.1 中引入的一个新 Code First 类,它取代 ObjectContext。 以前,需要通过某种变通方法才能将 DbContext 对象用作数据源。在响应中包括关系链接
OData 协议通过在 URI 中使用 $links 运算符来定义对实体间的关系进行寻址的方法。 WCF 数据服务 现在支持请求数据服务在响应中的项元素中包括这些链接。 此行为由 IncludeRelationshipLinksInResponse 配置属性控制。 有关更多信息,请参见配置数据服务(WCF 数据服务)。如果响应中存在关联实体,.NET Framework 客户端库在构建对相关实体进行寻址的 URI 时,现在会使用关系链接。
派生类型的导航属性
此版本 WCF 数据服务 支持为派生类型定义导航属性。 在早期版本中只能为基类型定义导航属性。支持具有不同基 URI 的实体集
OData 协议允许数据服务以具有不同基 URI 的集合的形式公开实体集。 以前,.NET Framework 客户端假定所有实体集共享 DataServiceContext 中定义的相同基 URI。 现在,可以定义一个委托,上下文使用该委托解析不具有相同基 URI 的实体集的 URI。 有关更多信息,请参见管理数据服务上下文(WCF 数据服务)。