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

基于业务对象的筛选

来源:Http://myeducs.cn 联系QQ:点击这里给我发消息 作者: 用户投稿 来源: 网络 发布时间: 12/10/19
下载{$ArticleTitle}原创论文样式
在fullList上调用了FindAll()方法,传递了我们自定义的DateFilter,然后返回了结果:

// 获取列表对象,使用 filter 作为筛选的条件
public static List<Order> GetList(List<Order> fullList, DateFilter<Order> filter)
{
    List<Order> list = null;
    if (fullList != null)
    {
       list = fullList.FindAll(new Predicate<Order>(filter.MatchRule));
    }
    return list;
}

在ObjFilter.aspx页面上布局与使用拼装SQL几乎没有区别,ObjectDataSource控件的属性有一些变化:

<asp:ObjectDataSource ID="objdsOrderList" runat="server" SelectMethod="GetList"
    TypeName="OrderManager" OnSelecting="objdsOrderList_Selecting">
    <SelectParameters>
       <asp:Parameter Name="fullList" Type="Object" />
       <asp:Parameter Name="filter" Type="Object" />
    </SelectParameters>
</asp:ObjectDataSource>

调用了新的重载了的GetList()方法。然后我们看一下CodeBehind文件上如何进行设置ObjectDataSource的Selecting事件:

// 属性,获取用于筛选的对象
public DateFilter<Order> Filter {
    get {
       DateFilter<Order> filter = new OrderFilter(Year, Month, Day, Country);
       return filter;
    }
}

// 设置参数
protected void objdsOrderList_Selecting(object sender, ObjectDataSourceSelectingEventArgs e)
{
    e.InputParameters["fullList"] = OrderManager.GetList();// 获取全部列表
    e.InputParameters["filter"] = Filter;
}

注意上面Year、Month、Day属性的获取代码以及DropDownList的SelectedIndexChanged事件代码我都省略了以节省篇幅。

事件探查器

OK,现在我们的所有工作都已经完成了,我们来测试一下通过这种方式对数据库依赖的减小。大家可以打开Sql Server2000的事件探查器(Sql Server2005下的Sql Server Profiler)。选择“文件” --> “新建” --> “跟踪” --> 进行登录。之后应该如下图所示:

选择“事件”选项卡,之后如下图所示:

从右侧“选定的事件”中删除“存储过程”、“安全审查”、“会话”,只保留“T-SQL”,我们只对它进行监视。然后可以看到类似下图,我们对数据库的每次访问都可以在这里看到:

点击上面的“橡皮擦”图标,可以对列表进行清除。然后我们先打开SqlFilter.aspx文件,可以看到我们对列表的每次操作,不管是翻页还是筛选,都会对数据库进行一次查询操作。然后我们点击“橡皮擦”清除掉列表,然后打开ObjFilter.aspx文件,可以看到在对数据库进行了第一次访问以后,后继的动作,无论是进行分页还是筛选操作,都不再对数据库构成依赖。

总结

在这篇文章中,我们主要讨论了如何对业务对象进行筛选。我先提出了很多人的一个思维定势:将操作交给数据库。随后列出了这种操作的典型流程,并在本文中将它称为“基于拼装SQL进行筛选”,然后给出了代码示范。

后半部分,我

网学推荐

免费论文

原创论文

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