原文:应用程序框架实战二十六:查询对象

信息系统的查询需求千变万化,在仓储中为每个查询需求创建一个特殊方法,将导致大量乏味而臃肿的接口。 一种更加可行的办法是,在应用层服务中描述查询需求,并通过仓储执行查询。 为了能够更好的描述查询需求,可以将查询功能从仓储中抽取出来,专门创建一个查询对象。 查询最复杂的部分是条件过滤,这也是查询对象的主要职责。查询对象可以认为是规约模式的一个变种,允许查询对象动态创建查询条件。 在Util.Doma ...

2015-01-20 22:24 4 3038 推荐指数:

查看详情

应用程序框架实战二十五:查询条件(规约模式应用)

  前面已经做了一些准备工作,本篇将介绍查询条件的封装,它是规约模式的一个应用。   规约使用一个对象来封装谓词,我之前已经介绍过它在验证方面的应用,本篇是规约模式在查询方面的应用。   规约的强大之处在于,能够将一堆杂乱无章的条件判断或查询条件封装起来,以一个清晰的概念来表达,并使得这些谓词 ...

Tue Jan 20 09:26:00 CST 2015 14 3828
应用程序框架实战十六:DDD分层架构之值对象(介绍篇)

  前面介绍了DDD分层架构的实体,并完成了实体层超类型的开发,同时提供了验证方面的支持。本篇将介绍另一个重要的构造块——值对象,它是聚合中的主要成分。   如果说你已经在使用DDD分层架构,但你却从来没有使用过值对象,这毫不奇怪,因为多年来养成的数据建模思维已经牢牢把你禁锢,以致于你在使用 ...

Wed Nov 26 04:26:00 CST 2014 33 7031
应用程序框架实战二十四:基础查询扩展 - 分页与排序

  上一篇介绍了IQueryable的Where方法存在的问题,并扩展了一个名为Filter的过滤方法,它是Where方法的增强版。本篇将介绍查询的另一个重要主题——分页与排序。   对于任何一个信息系统,查询都需要分页,因为不可能直接返回表中的所有数据。   如果直接使用原始的Ado.Net ...

Sun Jan 04 05:08:00 CST 2015 11 3390
应用程序框架实战二十三:基础查询扩展

  上面两篇已经作好准备,本文将进行基础查询扩展。当使用了Entity Framework这样的ORM框架以后,我们查询的核心被集中在IQueryable的Where方法上。   如果UI需要通过姓名查询一个客户,会在UI上放置一个输入框作为客户姓名的查询条件。服务端接收以后通过Where方法 ...

Thu Dec 25 21:25:00 CST 2014 14 3901
应用程序框架实战一:引言

  敏捷时代的来临,迫使微软.Net技术也在向敏捷方向发展。近几年,.Net在数据访问、Web、测试等多个领域大刀阔斧的进行改革,新技术不断涌现。一方面这是值得庆幸的,让.Net程序员在开发复杂项目有了更多的选择,一改往日只能拖控件绑定数据的局面。另一方面,程序员需要大量的学习,并且需要依赖更多 ...

Wed Oct 29 23:02:00 CST 2014 16 7220
应用程序框架实战十六:CRUD实战演练介绍

  从本篇开始,本系列将进入实战演练阶段。   前面主要介绍了一些应用程序框架的概念和基类,本来想把所有概念介绍完,再把框架内部实现都讲完了,再进入实战,这样可以让初学者基础牢靠。不过我的精力很有限,文章进度越来越慢,所以准备切换一下介绍顺序,把实战演练提前,以方便你阅读代码。 实战演练介绍 ...

Mon Apr 20 07:20:00 CST 2015 58 8201
应用程序框架实战二十八:前端框架决择

  对于BS管理系统,我很长一段时间都工作在Asp.Net Web Form上,Web Form的主要优势是可以使用服务器端控件,以类似CS的开发模式进行工作,通过拖拽控件和定义事件处理函数,极大的简 ...

Tue Jan 27 22:59:00 CST 2015 251 9697
应用程序框架实战二十:映射层超类型

  上一篇介绍了工作单元层超类型的封装演化过程,本文将介绍对Entity Framework映射层超类型的封装。   使用Entity Framework一般需要映射三种类型的对象,即实体、聚合、值对象。   聚合与实体映射的主要区别是:聚合映射单属性标识Id,并需要映射乐观离线锁 ...

Tue Dec 09 02:55:00 CST 2014 1 3486
 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM