分层中的~条件过滤~每个层对于“条件过滤”的职责
2012-10-08 17:10
316 查看
在分层架构中,查询操作是很常见的,我们有时总是希望把它写得健壮一些,有时总希望重复代码少一些,可能有时也希望它可以美丽一些,呵呵!
在这个系列中,我将为大家解说一下分层架构里的条件过滤,如何去设计它,WEB,BLL,DATA层都干什么事,怎么样使程序更加灵活,更加合理些。
目录:
BLL 层:根据某种条件去调用LinqForPredicate方法,并完成对结果集的过滤,代码可能是这样:
DATA层:这个层还是返回最单纯的数据集,条件过滤不会去影响这个层
最后,在页面上可能会是这样的结果:
有时,我们可能在为一个功能思前想后
在这个系列中,我将为大家解说一下分层架构里的条件过滤,如何去设计它,WEB,BLL,DATA层都干什么事,怎么样使程序更加灵活,更加合理些。
目录:
一 每个层对于“条件过滤”的职责
二 Lambda表达式对于查询语句简化了不少,牺牲的性能可以接受
三 将所有过滤条件放到字典里,最后统一过滤
四 为Iqueryable结果集添加扩展方法,并添加排序功能
五 模块完整代码
一 每个层对于“条件过滤”的职责
WEB UI 层:整理查询的对象,并进行初始化工作,组织PredicateList对象(我的条件过滤器),代码可能是这样:PredicateList<User> predicateList = new PredicateList<User>(); predicateList.Add(i => i.ID > 1);
BLL 层:根据某种条件去调用LinqForPredicate方法,并完成对结果集的过滤,代码可能是这样:
IQueryable<User> linq = arr.AsQueryable(); if (sortBy == 0) linq = linq.LinqForPredicate<User>(predicateList, i => i.Asc(j => j.ID)); else linq = linq.LinqForPredicate<User>(predicateList, i => i.Desc(j => j.ID));
DATA层:这个层还是返回最单纯的数据集,条件过滤不会去影响这个层
最后,在页面上可能会是这样的结果:
有时,我们可能在为一个功能思前想后
相关文章推荐
- 软件开发生命周期-4-每个阶段的循环条件
- 【转】C# ArcgisEngine开发中,对一个图层进行过滤,只显示符合条件的要素
- 对于一个不可修改的类,它的每个对象是不是都必须声明成final的?
- 字符串查询条件预处理 就是查询时某变量进行过滤处理
- 检查用户设定的过滤条件,Like和Not Like操作符的,没加%的,强制在两边加上
- 过滤条件--Selectors
- mongo查询过滤条件java实例($and,$or,$eq,$ne)
- MongoDB命令模式下的条件过滤总结
- 对于 SWT(JFACE)中 FilterTree的改造,同时过滤两棵树
- Hbase shell中scan命令的过滤条件PrefixFilter
- 扩展 Entity Framework支持复杂的过滤条件(多个关键字模糊匹配)
- TableStore表格存储(阿里云OTS)多行数据操作查询,支持倒序,过滤条件和分页
- Python: 数组条件过滤简洁实现方式
- 有点麻烦的awk 对于域(列)查找过滤
- 与具体ORM实现无关的属性过滤条件封装类, 主要记录页面中简单的搜索过滤条件.
- 一对多管理中,针对set集合过滤条件查询sql
- 关于SQL语句外连接中的过滤条件
- 一站式学习Wireshark(八):应用Wireshark过滤条件抓取特定数据流
- .net简谈分层架构思想(彻底分离每个层)——后补
- 从general log 中过滤出对于某个特定database的操作