当前位置: 首页 > 文章教程  > 计算机与互联网 > 网络编程

10.5ADO.NETDataServices1.5的新增功能

8/31/2020 9:56:04 PM 人评论

10.5ADO.NETDataServices1.5的新增功能

图片 1 知识点讲解:光盘:视频\PPT讲解(知识点)\第10章\ADO.NET Data Services 1.5的新增功能.mp4

ADO.NET Data Services 1.5新增了如下5条功能。

(1)支持服务端的RowCount:获取指定实体集合的成员数,即只返回一个整型值,而不返回实体集合。

(2)支持服务端的分页:服务端可以返回分页后的数据,并且在其中还可以包含全部数据总数。

(3)支持服务端的Select:返回的结果只包括Select的字段。

(4)支持大数据传输BLOB(Binary Large Object)。

(5)支持自定义数据服务。

实例055 演示支持服务端 RowCount

源码路径 光盘\daima\10\DataAccess\DataServices\  视频路径 光盘\视频\实例\第10章\055

本实例的具体实现过程如下。

(1)编写主实现文件MyDataService.svc.cs,其主要代码如下。

namespace DataAccess.DataServices.Service
{
  [System.ServiceModel.ServiceBehavior (Include
ExceptionDetailInFaults = true)]
  public class MyDataService : DataService<MyEntity.
AdventureWorksEntities>
  {
    public static void InitializeService (DataService
Configuration config)
    {
      config.DataServiceBehavior. MaxProtocol
Version = DataServiceProtocolVersion.V2;
      config.SetEntitySetAccessRule("Products", EntitySetRights.All);
// SetEntitySetPageSize(string name, int size)是新增的方法,用于提供分页后的数据
// string name - 指定需要用于分页的实体集合
// int size – 指定分页的页大小
      config.SetEntitySetPageSize("Products", 5);
    }
  }
}
范例109:Office文件操作
源码路径:光盘\演练范例\109视频路径:光盘\演练范例\109范例110:使用System.Web.Mail发送邮件
源码路径:光盘\演练范例\110视频路径:光盘\演练范例\110\

(2)编写文件RowCount.aspx.cs,其主要实现代码如下。

namespace DataAccess.DataServices
{
  public partial class RowCount : System.Web.UI.Page
  {
    protected void Page_Load(object sender, EventArgs e)
    {
      MyDataServiceProxy.AdventureWorksEntities context = new MyDataServiceProxy. AdventureWorksEntities(new Uri("http://localhost:9046/DataServices/Service/MyDataService.svc/"));
// 支持服务端的 RowCount - 获取指定实体集合的成员数(只返回一个整型值,而不返回实体集合)
var productCount = context.Products.Count();
Response.Write(productCount.ToString());
    }
  }
}
/*
$count - 返回 RowCount,即对应集合的成员数(只返回一个整型值,而不返回实体集合)
http://localhost:9046/DataServices/Service/MyDataService.svc/Products/$count
$inlinecount=none - 只返回实体集合(分页后的数据)
http://localhost:9046/DataServices/Service/MyDataService.svc/Products?$inlinecount=none
$inlinecount=allpages - 在返回实体集合的基础上(分页后的数据),其中还会包括一个实体集合成员数(分页前的数据)的字段
http://localhost:9046/DataServices/Service/MyDataService.svc/Products?$inlinecount=allpages
*/

其中以URI语法的方式查询ADO.NET数据服务的格式如下。

http://[Url]/[ServiceName]/[EntityName]/[NavigationOptions]?[QueryOptions]

实例056 演示支持服务端分页

源码路径 光盘\daima\10\DataAccess\DataServices\  视频路径 光盘\视频\实例\第10章\056

本实例的具体实现过程如下所示。

(1)编写主实现文件MyDataService.svc.cs,其主要代码如下。

namespace DataAccess.DataServices.Service
{
  [System.ServiceModel.ServiceBehavior(IncludeExceptionDetailInFaults = true)]
  public class MyDataService : DataService<MyEntity.AdventureWorksEntities>
  {
    public static void InitializeService(DataServiceConfiguration config)
    {
      config.DataServiceBehavior.MaxProtocolVersion = DataServiceProtocolVersion.V2;
      config.SetEntitySetAccessRule("Products", EntitySetRights.All);

   // SetEntitySetPageSize(string name, int size) - 新增的方法,用于提供分页后的数据
   //   string name - 指定需要用于分页的实体集合
   //   int size – 指定分页的页大小
      config.SetEntitySetPageSize("Products", 5);
    }
  }
}
范例111:使用Jmail组件接收E-mail
源码路径:光盘\演练范例\111视频路径:光盘\演练范例\111范例112:实现简单搜索
源码路径:光盘\演练范例\112视频路径:光盘\演练范例\112\

(2)编写文件Paging.aspx.cs,其主要实现代码如下。

namespace DataAccess.DataServices
{
  public partial class Paging : System.Web.UI.Page
  {
    protected void Page_Load(object sender, EventArgs e)
    {
      MyDataServiceProxy.AdventureWorksEntities context = new MyDataServiceProxy. AdventureWorksEntities(newUri ("http://localhost:9046/DataServices/Service/MyDataService.svc/"));
// 支持服务端的分页 - 服务端可以返回分页后的数据,并且在其中还可以包含全部数据总数
//服务端代码:config.SetEntitySetPageSize("Products", 5); 表示每页最多 5 条数据
//客户端代码:通过 Skip() 方法来控制需要跳过的记录数
      var products = context.Products.Skip(10);
      foreach (var product in products)
      {
        Response.Write(product.ProductID.ToString() + "<br />");
      }
    }
  }
}
/*
$skip=[int] - 指定需要跳过的记录数
http://localhost:9046/DataServices/Service/MyDataService.svc/Products?$skip=10

$inlinecount=none - 只返回实体集合(分页后的数据)
http://localhost:9046/DataServices/Service/MyDataService.svc/Products?$inlinecount=none

$inlinecount=allpages -在返回实体集合的基础上(分页后的数据),其中还包括一个实体集合成员数(分页前的数据)的字段
http://localhost:9046/DataServices/Service/MyDataService.svc/Products?$inlinecount=allpages
*/

相关教程

共有条评论 网友评论

验证码: 看不清楚?