使用统一的 URI 对数据进行寻址的简单方案(ADO.NET 数据服务框架)

ADO.NET 数据服务框架实现了一个使用 URI 来定位数据的寻址方案。实体数据模型 的实体关系模式可用于将数据组织为实体和在实体集中逻辑分组的实体的关联。URI 寻址方案中反映了这些模式。

为了通过示例描述这一系统,下面的示例中使用了客户跟踪服务。通过以下 URI 对所有 Customer 实体进行寻址。

http://myserver/data.svc/Customers

此 URI 的 /Customers 段指向元数据中指定的 Customer 实体集。ADO.NET 数据服务框架元数据与 EDM 中的概念架构等效。实体集 Customers 在逻辑上包含 Customer 实体类型的所有实例。

在此语法中,下面的 URI 将检索单个 Customer 实体,其键属性(如元数据中所定义)具有值“ALFKI”。

http://myserver/data.svc/Customers('ALFKI')

实体和关联

元数据描述了实体类型和各个实体之间的关联的结构。ADO.NET 数据服务框架利用此信息提供用于关联遍历的机制。例如,如果数据服务中的每个 Customer 实体都关联一组 Orders,则以下 URI 表示与 Customer(其主键具有值“ALFKI”)关联的销售订单集。

http://myserver/data.svc/Customers('ALFKI')/Orders

可以对 Customer 实体的属性单独进行寻址。例如,以下 URI 表示带有键“ALFKI”的 Customer 实体的 ContactName

http://myserver/data.svc/Customers('ALFKI')/ContactName

除了基于键的查询之外,寻址方案中还可以包含简单谓词。这样将能够基于实体的属性选择数据集,例如带有键“ALFKI”的 Customer 的当前活动的 Orders 集。通过以下 URI 检索此数据:

http://myserver/data.svc/Customers('ALFKI')/Orders?$filter=Active eq true

还可以将前面的示例中使用的 $filter 运算符与字符串、数学或日期函数结合使用。以下 URI 表示 Customer“ALFKI”在 2007 年所下的活动订单集:

http://myserver/data.svc/Customers('ALFKI')/Orders?$filter=
Active eq true and (year(OrderDate) eq 2007)

如果 Orders 具有其他相关实体,则此 URI 能够继续深化关联图、遍历关联以及筛选每个结果集。

呈现控制信息

ADO.NET 数据服务 URI 还可以在查询字符串包含用于对数据进行排序的信息。Internet 应用程序的常见要求包括对数据分页和按属性进行排序。以下 URI 列出了按日期排序的 Orders 实体:

http://myserver/data.svc/Customers('ALFKI')/Orders?$filter=
Active eq true&$orderby=OrderDate

通过组合 $skip 参数和 $top 参数,可以获得分页结果。在客户列表中,通过以下 URI 可获得编号为 31 到 41 的客户:

http://myserver/data.svc/Customers?$skip=30&$top=10 

GET、PUT、POST 和 DELETE

在 HTTP GET 请求中使用上一个示例中的语法检索实体和实体集。若要更新实体或关系,ADO.NET 数据服务可使用 HTTP PUT 语法。类似地,使用 HTTP POST 语法可创建新实体,而使用 HTTP DELETE 语法可消除存储中的实体。有关更多信息,请参见 ADO.NET 数据服务的客户端应用程序

另请参见

概念

REST 服务和语义(ADO.NET 数据服务框架)
通用 HTTP 要求(ADO.NET 数据服务框架)

其他资源

ADO.NET 实体框架