工作中往往要对数据进行复杂的处理后,得到一个庞大的记录集.
这个处理是很耗服务器资源的,因次希望查询条件没有改变时,直接从已生成记录集返回指定页,而不是让服务器再生成.现有想法2个1 在查询生成后一次性加载到客户端,查询条件没改变前直接在本地读取.变了再重新查询并加载数据到本地.
如果用这种方法,如何实现最好?把记录集存到本地XML文件,最从XML读取指定记录吗?2 在服务器生成一个临时表,查询条件没改变前从临时表读取,条件改变了再刷新临时表. 在数据库创建临时表,条件不断的改变,多用户不断的删除和创建,对数据库工作会有什么不良影响吗?不知这面2方法是否可行,那种更好,或者都不好,恳请你的指教.
这个处理是很耗服务器资源的,因次希望查询条件没有改变时,直接从已生成记录集返回指定页,而不是让服务器再生成.现有想法2个1 在查询生成后一次性加载到客户端,查询条件没改变前直接在本地读取.变了再重新查询并加载数据到本地.
如果用这种方法,如何实现最好?把记录集存到本地XML文件,最从XML读取指定记录吗?2 在服务器生成一个临时表,查询条件没改变前从临时表读取,条件改变了再刷新临时表. 在数据库创建临时表,条件不断的改变,多用户不断的删除和创建,对数据库工作会有什么不良影响吗?不知这面2方法是否可行,那种更好,或者都不好,恳请你的指教.
设置它们的EnableCaching为True即可.你不需要做更多的工作,第一次读取得到的
DataSet将被缓存.下次需要读DataSet时,就会直接从缓存中读取(如果此缓存在有效期内)当然如果你不用数据源控件,而是手工写代码取数据.那其实也很简单.
一个简单的示例://在第一次打开页面时,从数据库中读出数据,并写入cache
Private DataSet getdate()
{
DataSet ds=Cache["mydata"] as Dataset;
if (ds==null)
{
ds=selectdata(); //selectdata方法从数据库中读数据并返回dataset
Cache.Insert("mydata",ds);
}
return ds;
}Private DataSet selectdata()
{
//从数据库中查询数据
}
我用LINQ连接数据库的,返回的类型与DataSet有些区别,方便的话介绍一下LINQ返回类型的缓存,省得我还要花很多时间琢磨.人懒,呵呵.
不一定限定成dataset,上面只是个简单示例.
你想保存什么类型就根据你的需要了.使用时,转换一下就行了.譬如:
DataSet ds=Cache["mydata"] as Dataset;
Dictionary dc=(Dictionary) Cache["mydc"];
http://blog.miniasp.com/post/2008/07/Cache-LINQ-to-SQL-result-by-using-SqlCacheDependency.aspx
分页使用skip tack
字段的延迟加载
LIQN 缓存