10.5 ADO.NET Data Services 1.5的新增功能
知识点讲解:光盘:视频\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
*/