您的位置:首页 > Web前端

[转载]NewLife XCode 数据映射框架

2012-01-01 23:57 751 查看
/article/4840553.html

对于一个框架来说,仅有基本的CURD不行,NewLife.XCode同时还提供了一个非常宽松的方式来使用高级查询,以满足各种复杂的查询需求。

(本文同样适用于其它任何数据访问框架)

先上图看一个复杂查询的效果图:





这里有8个固定的查询条件和1个模糊查询条件,加上多表关联(7张表)、分页、统计,如果用传统的做法,这个查询会非常的复杂。

这个页面有XCode实现,核心查询部分共100多行代码,包括一个查询、一个总记录数分页、两个统计(就是业绩、提成等的统计),看看高级查询代码:





可以看到,关键就在SearchWhere里面,另外四个方法,都是调用它,它的作用,就是为了构造一个where字句。

XCode不支持多表关联(v7开始测底不支持,以前的支持太鸡肋,几乎从未使用),这种涉及多表关联的查询,就需要子查询来代替了,看看SearchWhere:









可以看到,除了UserRelation外,基本都是通过子查询来实现关联查询。而UserRelation是用户关系表,数据比较固定,采用了二级实体缓存,对它的查询几乎不会形成数据库查询,缓存命中率不低于99%。

在各个小片段上使用MakeCondition格式化数据,保证这些代码能根据当前数据库生成相应的语句,使得系统能支持多数据库。比如时间日期类型,在MSSQL是单引号边界,在Access是井号边界。

回过头来,看看前端页面是怎么做的,查询条件区域:





这里用了好些用户自定义控件,便于多个地方重用。

再看看ObjectDataSource是怎么配置的:





ObjectDataSource负责把查询区域的控件跟后台查询方法的参数,给绑定起来,并且支持分页查询,让前台页面,不需要写代码,就实现了高级分页查询。

并且,后台的那些查询方法,同样适用于非ObjectDataSource的前台,也适用于WinForm等应用系统之中!

NewLife.XCode下载地址:http://XCode.codeplex.com

没有很完整的教程,只有本博客中的点点滴滴!初衷是跟大家交流技术,让大家都掌握这些应用开发经验,而不是让大家都来用XCode!有了这些东西,你也可以做出来自己的XCode!

if ($ != jQuery) {
$ = jQuery.noConflict();
}
var isLogined = true;
var cb_blogId = 23151;
var cb_entryId = 2140479;
var cb_blogApp = "nnhy";
var cb_blogUserGuid = "a866360b-63cf-dd11-9e4d-001cf0cd104b";
var cb_entryCreatedDate = '2011/8/16 12:54:00';

分类: X系列组件
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: