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


    http://www.cnblogs.com/nnhy/archive/2010/09/12/1824349.html

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

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

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

    image

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

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

    image

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

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

    image

    image

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

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

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

    image

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

    再看看ObjectDataSource是怎么配置的:

    image

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

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

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

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

  • 相关阅读:
    Hive:ORC File Format存储格式详解
    tmpfs使用探讨
    Autofs自动挂载探讨
    新建swap分区的规划、挂载和自动挂载示例
    Linux下禁止使用swap及防止OOM机制导致进程被kill掉
    Linux Swap交换分区探讨
    Linux下配置nfs并远程挂载实战探讨
    java.util.NoSuchElementException问题定位
    spark推测执行的坑
    Spark的性能调优杂谈
  • 原文地址:https://www.cnblogs.com/fx2008/p/2309723.html
Copyright © 2020-2023  润新知