Silverlight查询大数据出错?使用服务器端分页控件DomainDataSource

原文http://www.cnblogs.com/slmk/archive/2012/08/21/2649369.html

DomainDataSource控件是很强大的,排序/分组/分页等都能轻松搞定。控件的使用可以参考MSDN的文档,已经很详细了。

值得注意的是:其分页功能是“服务器段分页”,而不是一次性将数据下载到客户端去分页。我做过试验,客户端分页如果数据超过3500行,直接报错 (使用的DataGrid和DataPager显示数据,WCF RIA Service传递数据)。而DomainDataSource控件采用服务器分页就没有此问题,并且分页是自动的,不需要自己手动Skip,Take 了。为了验证DomainDataSource控件是如何做到服务器端分页的,我们可以使用Sql Server Profiler工具,对传到服务器端的SQL语句进行跟踪。

1、打开Sql Server Profiler,新建跟踪,选择数据库,开始跟踪

2、示例程序很简单,使用的Sql Server 2005自带的AdventureWorks数据库。DomainService代码:

[EnableClientAccess()] public class CustomerService : LinqToEntitiesDomainService<AdventureWorksEntities> {          public IQueryable<Customer> GetCustomer()         {             return this.ObjectContext.Customer.OrderBy(c => c.CustomerID);         } }

如果要使用分页功能,必须OrderBy我们的数据。客户端数据:

<Grid x:Name="LayoutRoot" Background="White">          <ria:DomainDataSource x:Name="Source" PageSize="15" LoadSize="30" QueryName="GetCustomer" AutoLoad="True">             <ria:DomainDataSource.DomainContext>                 <sv:CustomerContext/>             </ria:DomainDataSource.DomainContext>         </ria:DomainDataSource>         <StackPanel>             <data:DataGrid ItemsSource="{Binding Data,ElementName=Source}"/>             <data:DataPager Source="{Binding Data,ElementName=Source}"/>         </StackPanel>     </Grid>

3、运行示例程序:将近2万行数据Silverlight没有崩溃的,这得益于"服务器端分页“,按需加载。

这里我们设置了每次查询加载30行数据,每页显示15行,也就是说每翻2页查询一次数据库。

4、多翻几页,然后查看Profiler的跟踪:

我们发现TOP (30) 了,并且每次分页执行了2次查询:

1)取得总查询行数,用于DataPager分页

SELECT  [GroupBy1].[A1] AS [C1] FROM ( SELECT      COUNT(1) AS [A1]     FROM [Sales].[Customer] AS [Extent1] )  AS [GroupBy1]

2)分页算法,使用了临时表,算法很通用,不知道性能如何?

SELECT TOP (30)  [Extent1].[CustomerID] AS [CustomerID],  [Extent1].[TerritoryID] AS [TerritoryID],  [Extent1].[AccountNumber] AS [AccountNumber],  [Extent1].[CustomerType] AS [CustomerType],  [Extent1].[rowguid] AS [rowguid],  [Extent1].[ModifiedDate] AS [ModifiedDate] FROM ( SELECT [Extent1].[CustomerID] AS [CustomerID], [Extent1].[TerritoryID] AS [TerritoryID], [Extent1].[AccountNumber] AS [AccountNumber], [Extent1].[CustomerType] AS [CustomerType], [Extent1].[rowguid] AS [rowguid],  [Extent1].[ModifiedDate] AS [ModifiedDate], row_number() OVER (ORDER BY [Extent1].[CustomerID] ASC) AS [row_number]     FROM [Sales].[Customer] AS [Extent1] )  AS [Extent1] WHERE [Extent1].[row_number] > 30 ORDER BY [Extent1].[CustomerID] ASC

5、如果我们点击DataGrid列头,DomainDataSource控件会自动进行服务器端排序,跟踪会发现上面的Sql语句Asc变成Desc了

posted on 2012-11-29 11:22 NET未来之路 阅读(...) 评论(...) 编辑 收藏

转载于:https://www.cnblogs.com/lonelyxmas/archive/2012/11/29/2794229.html

Silverlight查询大数据出错?使用服务器端分页控件DomainDataSource相关推荐

  1. 日积月累系列之分页控件(js源码)

    最近开发了一款分页控件,分享给大家. 主要功能和界面介绍 cform分页控件支持服务端分页.客户端分页.数据过滤.数据排序等功能. 源码介绍 cform-pager分页控件主要由三部分组成:css.s ...

  2. php查询mysql表里的数据_PHP/MYSQL 查询大数据/遍历表

    PHP:PHP 5.3.6 (cli) (built: Jun 15 2011 16:29:50) MYSQL:5.1.51 如果我们有的一张表有几百万或几千万的记录,我们要使用 PHP 将所有的记录 ...

  3. SpringBoot+MongoDB查询大数据字段优化

    记录一下 SpringBoot+MongoDB查询大数据字段,查询的单个字段或者总查询结果量太大 用 mongoTemplate.find(query, NewSnapshot.class, coll ...

  4. MVC3学习第十三章 佟掌柜第二弹——MVC3下利用陕北吴旗娃的分页控件实现数据分页...

    本章学习内容 1.了解陕北吴旗娃的Mvc分页控件 2.利用分页控件实现MVC3下的商品分页 3.利用分页控件实现MVC3下一个页面多个分页以及ajax分页效果 1.了解陕北吴旗娃的Mvc分页控件 在w ...

  5. 关于大数据你应该了解的五件事儿

    摘要: 本文从基本概念.行业趋势.学习途径等几个方面介绍了大数据的相关内容,适合对大数据感兴趣的读者作为入门材料阅读. 随着科技的发展,目前已经步入了大数据的时代,很多社交媒体和互联网公司也非常关注大 ...

  6. 简单的html数据分页控件封装

    好用的分页控件有好多,但似乎自己实现和封装一个比较方便,以后修改也方便. 大概的想法是创建一个page.js文件,把所需的函数封装到window的page对象中.需要使用这个控件的时候,引用page. ...

  7. 如何使用AspNetPager分页控件对动态查询的结果进行分页

    注意: 如果 设置UrlPaging 为True,后台用ViewState是保存不住查询条件的,如果非要用Url分页,可以用Session保存查询条件. 后台代码 : const string vsK ...

  8. 最新风控模型竞赛开始了,金融大数据应用-企业信贷风险防控-中国建设银行数据集

    各位朋友,最新金融风控模型竞赛开始了!竞赛名称为金融大数据应用:企业信贷风险防控:组织单位:数字中国建设峰会组委会:中国建设银行提供模型竞赛数据集. 这次模型竞赛奖金很高,总奖金160万元,一等奖八万 ...

  9. 金融大数据应用-企业信贷风险防控模型竞赛开始-中国建设银行数据集-作者开箱测评

    各位朋友,最新金融风控模型竞赛开始了!竞赛名称为金融大数据应用:企业信贷风险防控:组织单位:数字中国建设峰会组委会:中国建设银行提供模型竞赛数据集. 这次模型竞赛奖金很高,总奖金160万元,一等奖八万 ...

  10. .net 服务器端自定义分页控件 简单示例

    使用效果如图: 先将控件添加到工具箱 将控件拖入到页面 会自动生成如下代码 <pager:pager ID="Pager1" runat="server" ...

最新文章

  1. 为什么微博用jsoup爬取不出来东西_腾讯面试题: 百度搜索为什么那么快? | 原力计划...
  2. 《NoSQL For Mere Mortals》书评与作者问答录
  3. dao加service加mysql实例_SpringBoot项目整合mybatis的方法步骤与实例
  4. H5案例分享:移动端滑屏 touch事件
  5. RGB 24和YUY2相互转换
  6. DataList项模板中的div在后台得到方法
  7. 基于迁移学习的农作物病虫害检测方法研究与应用
  8. 数组去重实现的方式(越多越好)
  9. mysql数据库隔离级别 实现原理_MySQL事务及Spring隔离级别实现原理详解
  10. k2p华硕系统怎么设置_斐讯K2刷华硕固件教程
  11. 声反馈(啸叫)如何避免产生和解决
  12. CentOS8 安装 telnet 命令
  13. 功率放大器的设计要点
  14. 汉字拼音互相转换工具类
  15. Git如何保留两地并行开发的提交
  16. android 6g 有必要吗,手机6G运存真的有必要吗?这篇实测告诉你
  17. 【计算机网络】数据链路层 : 以太网 ( 无连接、不可靠服务 | 以太网发展 | 10BASE-T 以太网 | MAC 地址 | 以太网 MAC 帧 | 高速以太网 )
  18. 专项审计有哪些?专项审计报告包含哪些内容?
  19. 从零开始学IDA逆向(百度云)
  20. 任正非,你也太能装逼了吧?

热门文章

  1. replace()替换文字扑获组做法
  2. SQL Server中的MD5实现方法
  3. 实施IT运维管理 循序渐进
  4. 5.MongoDB之正则表达式与聚合框架
  5. 四种数据库特性对比(Redis/Mysql/SQLite/MongoDB)
  6. Linux系统编程 -- 可执行文件结构与进程在内存中的分布
  7. python决策树预测模型_「数据挖掘入门系列」数据挖掘模型之分类与预测 - 决策树...
  8. 《设计模式之美》之接口、抽象类笔记
  9. [渝粤教育] 山东大学 日本历史与文化 参考 资料
  10. 【渝粤教育】国家开放大学2018年春季 0133-21T大学物理 参考试题