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自身实现的话然并卵。
  未完待续...

dateset是不是在缓存中的更多相关文章

  1. EF封装类 增加版,增加从缓存中查找数据方法,供参考!

    EF封装类 增加版,增加从缓存中查找数据方法,供参考! 这个类是抽象类,我这里增加了需要子类验证的方法ValidateEntity,方便扩展,若想直接使用该类,可以将该类更改成静态类,里面所有的方法都 ...

  2. 简单实现Redis缓存中的排序功能

    1.在实现缓存排序功能之前,必须先明白这一功能的合理性.不妨思考一下,既然可以在数据库中排序,为什么还要把排序功能放在缓存中实现呢?这里简单总结了两个原因:首先,排序会增加数据库的负载,难以支撑高并发 ...

  3. 5.2:缓存中获取单例bean

    5.2  缓存中获取单例bean 介绍过FactoryBean的用法后,我们就可以了解bean加载的过程了.前面已经提到过,单例在Spring的同一个容器内只会被创建一次,后续再获取bean直接从单例 ...

  4. ASP.NET缓存中Cache过期的三种策略

    原文:ASP.NET缓存中Cache过期的三种策略 我们在页面上添加三个按钮并双击按钮创建事件处理方法,三个按钮使用不同的过期策略添加ASP.NET缓存. <asp:Button ID=&quo ...

  5. saiku显示不出新的cube(加载的cube,saiku会保存到缓存中,不重新加载)

    当用workbench 修改cube后,保存到saiku路径. saiku读取该cube时,如果以前加载过该cube(同路径,同名).则不会新加载,而是用缓存中的cube,这个cube是以前的cube ...

  6. 带着新人学springboot的应用02(springboot+mybatis+缓存 中)

    继续接着上一节,大家应该知道驼峰命名法吧!就是我们javabean中属性一般命名是lastName,userName这种类型的,而数据库中列名一般都是last_name,user_name这种的,要让 ...

  7. redis(四)--简单实现Redis缓存中的排序功能

    在实现缓存排序功能之前,必须先明白这一功能的合理性.不妨思考一下,既然可以在数据库中排序,为什么还要把排序功能放在缓存中实现呢?这里简单总结了两个原因:首先,排序会增加数据库的负载,难以支撑高并发的应 ...

  8. 将WebService部署到 SharePoint 2010 gac 缓存中,并用Log4Net记录日志到数据库

    最近做了一个sharePoint项目,需要实现的功能是,第三方网站访问我们sharePoint中的数据,通过Webservice方式实现文件的上传和下载. 于是代码工作完成了之后,本地调试没什么问题, ...

  9. Spring源码分析(十三)缓存中获取单例bean

    摘要:本文结合<Spring源码深度解析>来分析Spring 5.0.6版本的源代码.若有描述错误之处,欢迎指正. 介绍过FactoryBean的用法后,我们就可以了解bean加载的过程了 ...

随机推荐

  1. Fitness training

    2014-01-14 第一次跑步,结束后大腿酸. 2014-01-15 第二次跑步,跑的过程中臀部酸痛,结束后大腿酸痛. 已经进行跑步8次了,后6次,每次3000米 2014-02-06  plank ...

  2. C++将username部分用*取代

    简要:非常多时候中奖用户并不希望让别人知道他的ID.程序中我们就将他们的账号部分设置为*号显示. 比如:王小二->王*二. asadjsahd->a*********d. 代码: #inc ...

  3. mongodb的分布式集群(4、分片和副本集的结合)

    概述 前面3篇博客讲了mongodb的分布式和集群,当中第一种的主从复制我们差点儿不用,没有什么意义,剩下的两种,我们不论单独的使用哪一个.都会出现对应的问题.比較好的一种解决方式就是.分片和副本集的 ...

  4. 9款基于CSS3 Transitions实现的鼠标经过图标悬停特效

    之前给大家分享了很多css3实现的按钮特效.今天给大家分享9款基于CSS3 Transitions实现的鼠标经过图标悬停特效.这款特效适用浏览器:360.FireFox.Chrome.Safari.O ...

  5. Steps to Install Hadoop on CentOS/RHEL 6---reference

    http://tecadmin.net/steps-to-install-hadoop-on-centosrhel-6/# The Apache Hadoop software library is ...

  6. 代码片段------find批量处理

    应用案例: 当前目录下有若干目录,有多个目录下有一个名叫build.sh的脚本,但是没有可执行权限,现在要将所有的build.sh假如可执行权限. pengdl@debian:~/work/SDK_3 ...

  7. 关于测试Windows电脑端口的命令 —— telnet用法

    telnet服务在win7默认是打开的,如果没有打开要在电脑中打开. 命令格式:telnet ip port 例如:telnet 127.0.0.1 80 或者 telnet www.XXX.com ...

  8. MR 的 mapper 数量问题

    看到群里面一篇文章涨了贱识 http://www.cnblogs.com/xuxm2007/archive/2011/09/01/2162011.html 之前关注过 reduceer 的数量问题,还 ...

  9. C# 模式窗口下更新进度条

    public partial class frmProcessBar : Form { public frmProcessBar() { InitializeComponent(); } public ...

  10. C# 之 FileSystemWatcher事件多次触发的解决方法

    1.问题描述  程序里需要监视某个目录下的文件变化情况: 一旦目录中出现新文件或者旧的文件被覆盖,程序需要读取文件内容并进行处理.于是使用了下面的代码: public void Initial() { ...