当前位置: 网学 > 编程文档 > SQL SERVER > 正文

基于业务对象的筛选

来源:Http://myeducs.cn 联系QQ:点击这里给我发消息 作者: 用户投稿 来源: 网络 发布时间: 12/10/19
下载{$ArticleTitle}原创论文样式
明显,本文使用的方法的问题就是:当数据库数据变动时,缓存不能够即时过期。解决方法有两种:一个是使用Cache.Insert()的重载方法,设置缓存的自动过期时间(时间设的短了缓存优势不明显,时间设的长了数据变化不能即时反应);还有一个是在对数据库进行增删改时使用Cache.Remove()手动移除缓存(比较麻烦容易遗漏)。

本文不是讲述如何使用缓存的,上面是让大家了解使用缓存都会发生哪些可能,只要知道使用Cache.Insert(key,value)方法可以添加缓存就可以了。最后再说一下当我们使用Cache.Insert(key,value)插入缓存时,虽然没有设置过期时间,但是当服务器内存空间不足的时候,依然会将缓存移除。

对业务对象进行筛选

基于业务对象筛选其实就是基于List<Order>进行筛选(当然你的业务对象也可能不是List<Order>),思路似乎很简单,我们先通过一个重载的GetList()方法获取全部列表,在这个GetList()方法中应用缓存。然后遍历业务对象,选出它符合条件的项目,然后将符合条件的项目加入到新列表中,最后返回新列表。

// 获取全部列表
public static List<Order> GetList() {
    List<Order> list = HttpContext.Current.Cache["fullList"] as List<Order>;

    if (list == null) {
       list = GetList("Select OrderId, CustomerId, ShipCountry, OrderDate From Orders");
       // 添加缓存,永不过期(可以在删除、更新操作时手动让缓存过期)
       HttpContext.Current.Cache.Insert("fullList", list);
    }

    return list;
}

// 根据一个全部项目的列表,以及年、月、日对列表进行筛选
public static List<Order> GetList(List<Order> fullList, int year, int month, int day)
{
    List<Order> list = null;
    bool canAdd;      // 标记变量,说明当前项目是否符合添加的条件

    if (fullList != null)
    {
       list = new List<Order>();

       foreach (Order item in fullList)
       {
           canAdd = true;

           if (year != 0 && year != item.Date.Year)
              canAdd = false;

           if (month != 0 && month != item.Date.Month)
              canAdd = false;

           if (day != 0 && day != item.Date.Day)
              canAdd = false;

           if (canAdd == true)      // 如果全部条件满足,那么加入列表
              list.Add(item);
       }
    }

    return list;
}

上面无参

网学推荐

免费论文

原创论文

浏览:
设为首页 | 加入收藏 | 论文首页 | 论文专题 | 设计下载 | 网学软件 | 论文模板 | 论文资源 | 程序设计 | 关于网学 | 站内搜索 | 网学留言 | 友情链接 | 资料中心
版权所有 QQ:3710167 邮箱:3710167@qq.com 网学网 [Myeducs.cn] 您电脑的分辨率是 像素
Copyright 2008-2015 myeducs.Cn www.myeducs.Cn All Rights Reserved
湘ICP备09003080号