剖析ADO.NET数据服务框架

开发 后端
这里就ADO.NET数据服务框架创建服务操作和示例对公开基于实体框架的模型的数据服务实现服务操作,希望对大家有帮助。

ADO.NET数据服务框架还是比较常用的,于是我研究了一下ADO.NET数据服务框架,在这里拿出来和大家分享一下,希望对大家有用。在需要业务逻辑的情况下(例如实现验证逻辑或安全时),可以使用服务操作。服务操作允许开发人员在 URI 标识的服务器(类似于其他 ADO.NET 数据服务资源)上定义一个方法。这些服务操作是一些添加到派生自表示数据服务的 DataService 的类的方法。

ADO.NET数据服务框架之创建服务操作

若要实现服务操作,请将一个公共实例方法定义为派生自表示数据服务的 DataService 类的数据服务类的一部分。
◆此方法只能接受 [in] 参数。
◆如果对参数进行定义,则每个参数的类型必须为基元类型。
◆此方法必须返回 void、IEnumerable、IQueryable、T 或基元类(如整数或字符串)。
◆T 必须为一个类,此类表示数据服务将公开的数据模型中的某个实体类型。
◆若要支持查询选项(如排序、分页和筛选),服务操作方法应返回 IQueryable
◆必须用 [WebGet] 或 [WebInvoke] 属性为此方法添加批注。
◆[WebGet] 使您能够通过使用 GET 请求调用此方法。
◆[WebInvoke] 使您能够通过使用 PUT、POST 或 DELETE 请求调用此方法。

#T#可以用 SingleResultAttribute 为服务操作添加批注,指定此方法的返回值是一个实体而不是一个实体集。这一区别确定了生成的响应序列化。例如,当使用 AtomPub 序列化时,单个资源类型实例将表示为一个 entry 元素,而单个实例集将表示为一个 feed 元素。如果某个方法未遵循上面定义的约定,则不会将此方法公开为数据服务中的服务操作。对服务操作进行寻址。

根据 ADO.NET 数据服务协议规范,可通过将方法的名称放置到 URI 的***个路径段中来对服务操作进行寻址。可以将其他路径段或查询选项添加到此 URI,具体取决于服务操作的返回类型。下面的示例对公开基于实体框架的模型的数据服务实现服务操作。

  1. public class Northwind :   
  2. DataService<NorthwindModel.NorthwindEntities> 
  3. {  
  4. public static void InitializeService(IDataServiceConfiguration config)  
  5. {  
  6. // Entity sets access configuration.  
  7. config.SetEntitySetAccessRule("*", EntitySetRights.AllRead);  
  8.  
  9. // Service operations access configuration.  
  10. config.SetServiceOperationAccessRule("OrdersByCity",  
  11. ServiceOperationRights.All);  
  12. }  
  13.  
  14. [WebGet]  
  15. public IQueryable<Orders> OrdersByCity(string city)  
  16. {  
  17. if (string.IsNullOrEmpty(city))  
  18. {  
  19. throw new ArgumentNullException("city",  
  20. "You must provide a city name argument");  
  21. }  
  22.  
  23. return this.CurrentDataSource.Orders.Where(  
  24. "it.ShipCity = @city",   
  25. new ObjectParameter("city", city));  
  26. }  
  27. }  
责任编辑:田树 来源: 博客
相关推荐

2009-11-12 15:23:57

ADO.NET数据服务

2009-11-04 11:40:38

ADO.NET Dat

2009-11-13 13:42:38

ADO.NET数据服务

2009-11-12 10:45:45

ADO.NET连接测试

2009-11-11 16:08:21

ADO.NET数据服务

2009-11-12 10:15:37

ADO.NET使用

2009-11-03 16:17:39

ADO.NET Ent

2009-12-21 11:18:09

ADO.NET体系结构

2009-12-23 16:05:47

ADO.NET错误

2009-12-28 15:32:04

ADO.NET构造

2009-11-12 14:26:34

ADO.NET执行事务

2009-12-29 10:26:43

ADO.NET实体框架

2009-11-13 13:11:37

ADO.NET连接池

2009-12-30 16:58:43

ADO.NET

2009-11-12 15:12:57

ADO.NET实体框架

2009-12-22 16:10:21

ADO.NET框架

2009-12-29 14:55:31

ADO.NET Dat

2009-11-11 12:49:29

ADO.NET框架

2009-12-28 15:11:36

ADO.NET专家

2009-11-13 09:30:28

点赞
收藏

51CTO技术栈公众号