C#开发erp系统的时候有一个多表数据的查询展示到页面,采用了存储过程的方式,但是存储过程中没有加入分页(菜比)。刚开始测试数据几百条没有问题,当数据量提升至十万级后页面加载速度就很卡了,一般是使用分页来解决这个问题。这种情况我思考dateset是不是再缓存中?

  dateset表示一个数据集,是数据在内存中的缓存。

  每一个DateSet都有很多歌DateTables和Relationships。Relationships是一种联系两个数据表的特殊表。每一个DateTable都有很多DateRows和Datecols,页包括ParentRelations,ChildRelations和一些限制条件例如:主键不可重复。

  对于DateSet的任何操作都是在计算机的缓存中完成的。

  在将数据库中的数据抽取到之后,程序将数据放在DateSet这个容器中,他是各个数据源中的数据在计算机内存中映射成的缓存,也就是说DateSet是一个数据容器,DateSet对象是一个可以用xml形式表示的数据视图,是一种数据关系视图。

  DateSet的三种使用方法:

  1:把数据库中的数据通过DateAdapter对象填充到DateSet中

      第一步:通过DataAdapter的SqlCommand属性从数据库中检索出需要的数据,SqlCommand是一个command对象。

    第二步:用DataAdapter的Fill方法把检索来的数据填充到DateSet中。

  2:通过DataAdapeter对象操作DateSet实现更新数据库

    DateAdapter使用过它的Update方法实现以DateSet中数据来更新数据库。当DateSet实例中包含数据发生变化后,此时调用Update方法,DateAdapter将分析已作出更改并执行相应的命令(例如:insert,update\delete),并依此命令来更新数据库中的数据。

  3:把XML数据流或者文本加载到DateSet(ReadXML方法)

  DateSet的数据绑定:

数据绑定分成二类:简单型数据绑定和复杂型数据绑定。适用于简单型数据绑定组件一般有Lable、TextBox等,适用于复杂性数据绑定的组件一般有DataGrid、ListBox、ComboBox等。

 
    简单型数据绑定一般使用这些组件中的DataBindings属性的Add方法把DataSet中某一个DataTable中的某一行和组件的某个属性绑定起来,从而达到显示数据的效果。
 
  比如:textBox1.DataBindings.Add ( "Text" , dsDataSet1, " Customers. CustomerID ") ;
 
      复杂性数据绑定一般是设定组件的DataSource属性和DisplayMember属性来完成数据绑定的。DataSource属性值一般设定为要绑定的DataSet,DisplayMember属性值一般设定为要绑定的数据表或数据表中的某一列。
  比如:dataGrid1.DataSource = dsDataSet1 ;
  dataGrid1.DataMember = " Customers " ;
 
  DataSet的属性Tables可以获取该DATASET中表的数量:DataSet.Tables.Count
 
  DataSet的Tables是一个Table数组,指定其中的一个表:DataSet.Tables[i];//i为
 
  Table在数组序列中的位置 或 DataSet.Tables["表名"]; 
 
  通过Table的Rows对象组的Count获取该表的记录数:DataSet.Tables[i].Rows.Count;
 
  获取列数:DataSet.Tables[i].Columns.Count;
 
  这些是DateSet的简单应用,但是对于DateSet的缓存这个问题,还需要探讨。
  我的程序中分别两次刷新页面请求数据库,完成两次DateSet的查询,但是第二次的查询并没有使用缓存,这是需要在程序中指定的,如果单单是希望ef自身实现的话然并卵。
  未完待续...

最新文章

  1. python3练习-杨辉三角/帕斯卡三角形
  2. jquery用append添加按钮之后,按钮监听无法使用的解决方法
  3. iOS中数据传值的几种方式
  4. 委托、事件和Lambda
  5. UILabel 整理
  6. 让Codeigniter控制器支持多级目录
  7. indexOf()不区分大小写用法
  8. DOM4J介绍与代码示例(2)-XPath 详解
  9. 运行ant脚本(转载)
  10. onenote使用教程
  11. DataBinding(二):DataBinding的基本用法
  12. CentOS 7 安装OpenCV
  13. C++中List的用法
  14. 使用百度地图SDK出现的问题及解决方法
  15. xdebug php
  16. C#(winform)设置窗体的启动位置
  17. [知识点]C++中STL容器之vector
  18. MapReduce案例二:好友推荐
  19. 求最小生成树——Kruskal算法和Prim算法
  20. MR执行流程

热门文章

  1. (转)用AGG实现高质量图形输出(一)
  2. 即时通信(RPC)的Rtmp实现--代码实现篇
  3. MySql之char与varchar
  4. Errors running builder "Integrated External Tool Builder" on project
  5. C++ Qt 访问权限总结
  6. C++ 设计模式2 (面向对象设计原则)
  7. SQL Server 数据库文件管理
  8. Long Long Message 后缀数组入门题
  9. Calculate the formula
  10. 基于 SOA 的组件化业务基础平台