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. Android闹钟【复杂版】

    最近做闹钟,所以自己写了个Demo版本,这个程序是用listview单独的类来实现的,和activity类分开来实现的!这个是用数据库进行更新的,当闹钟设置后,闹钟图片变成闹钟的样子,闹钟取消后,图片 ...

  2. 几种 HtmlEncode 的区别(转发)

    问题: HttpUtility.HtmlDecode ,HttpUtility.HtmlEncode  与  Server.HtmlDecode ,Server.HtmlEncode  与 HttpS ...

  3. 网络传输速度bps与下载文件所需时间的换算

    相信很多同志都非常关注自己家的计算机上网的宽带是多少.关心单位上网的宽带是多少! 但是很多同志都经常误解网络传输速度,以至于责备网络接入商(电信.网通.铁通等单位)欺骗用户,限制上网的速度! 本文,就 ...

  4. iOS7开发中的新特性

        iOS7到现在已经发布了有一段时间了.相信你现在已经了解了它那些开创性的视觉设计,已经了解了它的新的API,比如说SpirteKit,UIKit Dynamics以及TextKit,作为开发者 ...

  5. IIS 之 打开/关闭 Internet 信息服务

    由于建立测试网站测试代码,重装电脑后不知道IIS在哪打开.下面以windows7为例介绍,打开IIS管理器的简要步骤. 第一步.查找IIS 1.点击" 开始 "→" 控制 ...

  6. iOS 应用首次开启 出现引导页面

    关于引导页面 ,可以是独立的一个视图控制器控制的滚动视图. 重点是处理 如何判断app是首次开启 而调用这个视图控制器得方法. 逻辑如下: -(BOOL)isFirstLoad { if(!标记第一次 ...

  7. CAKeyframeAnimation 旋转动画

  8. 初学者学习javascript语言应注意的那几点

    javascript在书写时应注意得那四点: 1)大小写敏感: 2)javascript是弱类型语言,声明变量是应全部使用var(因为javascript是弱类型语言): 3)字符串在定义时使用单引号 ...

  9. nodejs 安装 postgresql module

    # npm -gd install node-gyp # export PATH=$PATH:/usr/local/pgsql/bin # npm -gd install pg for test: # ...

  10. iOS block简单传值

    (1)声明block变量并设置返回值类型 typedef int(^MYBlock)(NSString *); @property (nonatomic, copy) MYBlock block; ( ...