Mediar.framework--Search 功能

有一阵子没有写mediar.framework的介绍了,主要是比较忙,但是有一个功能很重要—search,不介绍完感觉到有点遗憾。有人提到没有源代码,如果你有兴趣,请留下EMAIL。如果你得到原代码,请不要传播,此程序仅限于学习。

 

Search 主要在三个模块涉及,UIFactory, DataAccess , Search 需要写的代码比较少,格式比较简单,但是有一个性能的问题,对于搜索的结果,当要显示子对象内容时,子对象会重新去服务器取一次。

UI需要从BizObjectSearch 继承,这样做的好处是,可以统一搜索条件面,统一加入其它的功能 ,比如对结果集进行Excel导出等。从主界面或者其他的界面打开Search 界面需要用这样的代码:

Search 界面收集搜索条件会用到这样一个类Condition 把所有的条件放在一个list ,或者Hashtable中,界面中一个条件对应一个值。最后传给调用的对应的工厂类。另外search 基类还提供设置初使值的方法。

   工厂类主要职责是把条件传递给数据访问层,从数据访问层得到数据后再转换为对应的集合,最后传递给界面。搜索对应的工厂类比较简单,对应的代码类似

这里BuildBizObjectCollection 方法是把表转成对象集合

 

方法中添加了cache, CreateBizObject方法是每行对应一个实体。

public BizObject CreateBizObject(DataRow dr)

         
{

              BizObject bo;

              bo 
= CreateBizObject(this, dr);

              UpdateCache(bo);

              
return bo;

         }

CreateBizObject(this, dr)是一个抽象方法,在每个实体类中实现;最后调用类的构造方法,通过类里MoveRowToProperties(System.Data.DataRow dr)方法最终实数据行到实体的转换。

 

数据访问层主要是取得SQL,和参数,调用基类中其他访问数据的工具,返回所需要的数据。SQL语句一般可根据生成工具生成,如果是多表联合查询复杂的语句则需要手工写。目前数据访问工具使用了微软企业类库。

在数据访问层中有一个很重要,就是前面提到的DbCondition 这个类主要解析在UI中传入的条件,并生成对应的参数。现在支持Oracle ,MSSQl.

posted @ 2006-11-13 17:59  瑞德船长  阅读(1995)  评论(27编辑  收藏  举报