ADO.NET还是比较常用的,于是我研究了一下ADO.NET数据服务,在这里拿出来和大家分享一下,希望对大家有用。ADO.NET数据服务框架支持具象状态传输 (REST) 语义以外的功能。例如,服务操作和侦听器可用于将验证逻辑或安全过程添加到查询和更新中。可以使用 ADO.NET 数据服务定义的标准语法写入服务操作以对输出进行筛选或排序。以上示例的查询字符串中使用了排序语法,其中的 $orderby 和 $top 运算符应用于操作结果。
利用侦听器可以将自定义应用程序逻辑插入到数据服务的请求或响应过程中。必须为由数据服务公开的给定实体集显式注册侦听器方法。在指定的实体集上执行查询、插入、更新或删除操作时,将调用相应的侦听器。然后,侦听器可能会更改数据、执行授权策略或者甚至终止操作。
#T#ADO.NET数据服务也支持由关系数据库管理系统实现的存储过程。实体数据模型 支持将数据检索和修改映射到存储过程。ADO.NET 数据服务对此功能进行了改编。服务操作的服务范围可见性由某个方法控制,其方式与实体集可见性的控制方式大致相同。例如,若要使上述示例中的 CustomersByCity 方法可供访问,请将下图中的代码添加到派生自 DataService 的类。
- public class Northwind : DataService<NorthwindEntities>
- {
- public static void InitializeService(
- IDataServiceConfiguration config)
- {
- config.SetServiceOperationAccessRule("CustomersByCity",
- ServiceOperationRights.All);
- }
- [WebGet]
- public IQueryable<Customer> CustomersByCity(string city)
- {…
- }
- }
侦听器
利用 ADO.NET数据服务,数据服务开发人员能够截获请求/响应管道并注入自定义验证逻辑。在 ADO.NET数据服务中,侦听器具有两大作用:使您能够向处理管道添加验证逻辑;提供一个用于在每个请求中插入自定义身份验证策略的场所。查询侦听器不能采用参数。
请求/URI 处理
当数据服务接收到 GET 请求时,将处理请求 URI 并调用数据服务上定义的任何查询截获方法。下面的示例演示查询侦听器方法的实现,此方法可截获针对订单的 GET 请求。此侦听器仅返回分配给满足 CustomerID=="AROUT" 条件的客户的订单。若要对发送请求的用户进行身份验证,以便此方法将返回分配给每个用户的订单,则需要更多代码。
[QueryInterceptor("Orders")]
public Expression<Func<Orders, bool>> FilterOrdersByCustomer()
{
return o => o.Customers.CustomerID == "AROUT";
}